Revert "Add (currently unused) DerivablePaths argument to StoreAPI->buildPaths."

I think there's a better approach here.

This reverts commit 991fe8752678c6c7c9003e269e6d7ae0df0fb1e6.
Rename struct DerivationOutput to struct OldDerivationOutput
Rename DerivationOutputHashInfo to DerivationOutput and add an outPath to the struct
Make Derivations comparable

* hashDerivation made a member function with caching of results
* operator < defined to compare the hashes of the two Derivations
Add a global mapping from paths to the Derivations that can build them
Add method to add an old-style derivation to the known derivations map
localStore::buildPaths: If a path is in knownDerivations.buildMap, build its derivation.

Also, build old-style derivations by making a phony new-style derivation for them so that the same code path can be used for both.

Note, currently build-remote.pl will fail when building new-style derivations.
nix-daemon: Add an operation to add derivations to the daemon's known set.

For backwards compatability, derivation names can't end in .drv
RemoteStore::buildPaths: If the daemon is new enough, pass all known derivations to it before trying to build
libexpr: Switch to new-style derivations.

Note that contexts are now just paths.
Optimization: We don't need to save derivations whose outputs are all valid in knownDerivations.

This is especially useful in the remote store case.
import-from-derivation: Update to new interpretation of string context.