Replace boost::filesystem::relative() with my own implementation.

This also works on boost 1.57.0, where the previous version failed
to compile with.
Throw a proper exception rather than segfault on invalid level filenames.
Fix game crash when an invalid target level name is encountered. Fixes #146.
Beta version bump