Move each rulebook into its own directory.

Issue #248.
Fix logging stray filename.
Add initial custom require() bits.

Issue #248.
Keep track of the base dir for each rulebook.
Load each rulebook in a separate env.
Merge branch 'master' into rulebook
Each rulebook env has only one base path.

We create a separate env for each rulebook, so this makes sense and
simplifies things a lot.
Always use base path.
Fix error message for "description" field.
Trigger the on_load event.
Renamed rulebook dirs to match titles.
Contain the rulebook env inside the rulebook.

This ties the lifetime of the rulebook environment to the rulebook, so
we know that we can safely call Load() on the rulebook later.

This also means that the rulebook library may contain "bad" rulebooks
that didn't load properly.  We'll handle that in the UI later.
Use range-based for.
Don't translate script error messages.
Explain what's going on to set the environment.