rave: Clean up filesystem module.

This commit cleans up some unnecessary global statements and changes the indentation
style back to spaces.
rave: Add logging module.

The logging module serves as a simple but sane wrapper around Python's default
logging module. Modules can retrieve their logger using rave.log.get(__name__),
and the resulting logger can be used with the standard log methods. Calling the logger
will log an INFO message.
rave: Add bootstrap system.

The bootstrap system allows rave to be, as the name implies, bootstrapped
using various means. Currently only filesystem-based bootstrapping is supported,
but that may change in the future.

Bootstrapping is done in two stages: the global engine bootstrap,
and the game-specific bootstrap. The engine is bootstrapped using
rave.bootstrap.bootstrap_engine(), the game using rave.bootstrap.bootstrap_game().
Both functions take a bootstrapper name, if none is given an attempt will be made
to auto-detect the bootstrapper.

Bootstrappers should be placed in rave/bootstrappers/ and should implement the
following API:
- bootstrap_modules(): bootstrap essential engine modules.
- bootstrap_filesystem(): bootstrap engine file system and mount rave.bootstrap.ENGINE_MOUNT,
    rave.bootstrap.MODULE_MOUNT and rave.bootstrap.COMMON_MOUNT on the file system.
- bootstrap_game_filesystem(): bootstrap game file system and mount rave.bootstrap.GAME_MOUNT.
rave: Add backends system.

The backend system in rave allows code to specify multiple implementations
for the same 'category', and have the engine select an appropriate backend according
to platform suitability and backend priority.

Any code that uses `register(category, backend)` has to implement the following API:
- PRIORITY: a constant between `PRIORITY_MIN` and `PRIORITY_MAX`, where `PRIORITY_MIN` equals a last resort backend,
    `PRIORITY_NEUTRAL` equals a neutral priority, and `PRIORITY_MAX` equals the most important backend.
- available(): a function that returns whether or not the backend is available for this platform.
- load(): a callback called when this module has decided this backend.
rave: Add logger documentation, change Logger.exception signature to reflect docs.
rave: Update __init__.py to reflect new modules.
rave: Add loader module.

The loader module allows code to install import hooks to load modules in a certain package
from given search paths in the virtual file system.
build: Ignore Sublime Text-generated files.