Better tooling for exports.

Some general changes to flx: the linker output filename
directory is now autocreated.

If the felix stage of compilation creates an *_interface.flx
file then it, and the *.hpp file it depends on are copied
next to the linker output (i.e. into the same directory).
This makes separate compilation a bit easier, saves having
to manually copy these files up from the cache.

Some caveats: the copying is done as part of the Felix
compilation stage, i.e. straight after the interface is
generated, and before it is used. So it is done even
if the compile fails. On the other hand it is not done
if you omit the felix compilation stage. For example
if you run flx, then run again with a new output filename,
the copy won't be done (should probably be done after
the linker runs).

Similarly the autocreation of directories for the output
is done early, even if something fails earlier, or if
later stages actually creating the output are omitted.

At this stage, the *.hpp file is only copied if the
*_interface.flx file is, in fact it's only copied
because the interface.flx file requires it. However
a C++ only use of the library would still require
the interface file. Not an issue at the moment
because there's no direct support for using Felix
generated C++ libraries from C++ (but there will be).