I see now that we don't have a good design for packages that want to
provide the symbols of other packages to the user.  Thank you for
pointing that out, Diane, that is very helpful!

Here is the current design.  The package NormalToricVarieties starts
out, as recommended, with the line

   needsPackage "Polyhedra"

and "cones" is one of the functions defined in the Polyhedra package.
So, the first time NormalToricVarieties is loaded, the dictionary of
Polyhedra will be added to the list of dictionaries (dictionaryPath),
and the function "cones" will be visible.  Now imagine we do

  needsPackage "NormalToricVarieties"

twice.  The second time the file is not loaded and the command at the
top is not run, so the functions defined in Polyhedra are not made
available; all that happens is that the dictionary of
NormalToricVarieties is added to the dictionary path.  That's what's
plaguing you: the second time, it's happening inside your package, and
thus "cones" is not visible there.

So, for now, please load the dependent package explicitly.  In the
near future I will fix it by adding an option to newPackage that
specifies a list of names of packages whose symbols should be made
available to the user who loads the package currently being defined.
I suppose those symbols should also be made available to the code
inside the current package.  Packages whose symbols are needed only by
the code inside the current package, and not by the user, can continue
to be loaded with "needsPackage" inside the current package; but
perhaps now is a convenient time to add a further option to
"newPackage" that specifies a list of names of packages needed
internally.  If so, we might have something like this:

   newPackage( "Foo",
        ExportedPackages => {"Bar","Gar"},
        ImportedPackages => {"Far", "Par"}
        )

(Would those be good names for the options?)

-- addendum: Be careful about packages that need each other.  Perhaps there
   should be a header section so that at least some symbols can be created and
   some values can be assigned before the needed packages are loaded.
