Better handling of default="" in <environment> bindings

This now specifies that the default should be "", overriding any system
default.
Added prototype OCaml implementation

See: http://roscidus.com/blog/blog/2013/06/20/replacing-python-round-2/

This code can be used to execute a selections document without the
overhead of starting Python. Currently missing features:

- Windows support
- Checking for updates if selections are old or missing
- Internationalisation
Added some doc-strings
OCaml 0install command takes same arguments as the Python one

If it sees anything it can't understand, it execs the Python code.
Don't try to handle URIs in the OCaml yet
Fallback to Python code using "python -m"
Look in /usr/lib/0install.net/ for the runenv binary if not in our directory
Improvements to OCaml Makefile
Check the path for a command actually exists
Added "0install runenv" command

This avoids the need for a separate binary, which saves about 1 MB.
When run with "python -m", don't show "__main__.py" in usage message
Started on code to check whether an app needs to be updated

We check if we need to re-solve because an input to the solve has
changed, and we check if it's time to do a background update. But:

- We just assume that any current selections are still valid
- If we need to solve or update, we just fall back on the Python
Added General module for everything that shouldn't need a module prefix

Avoids opening the whole of Support.
Better error handling for exec
Check that selections are still installed

For distribution selections, this currently only works if quick-test-file is used.
Better API for logging
Installation instructions for OCaml
Added checking of native package versions for Arch and Debian
If -v is the first argument, enable debugging

Easier than setting OCAMLRUNPARAM=b.
Invalidate distro cache when package database changes