Add peer for Rulebook.

This allows Rulebook to be subclassed via Lua.
Add RulebookPeer to Windows build.
Fix registered name for RulebookPeer.
Properly log track header errors when loading.
Exclude old Win32-specific files from build.

NetworkSession will probably be revived, but the others are just kept
around as a reference until we can replace them.
TrackList now deals in TrackEntryPtrs.

This is so the TrackEntry can live past the lifetime of the TrackList
(e.g., in a Rulebook).
Add OpenTrack(TrackEntryPtr).

This is a convenience overload for when you've already got a
TrackEntryPtr and not just the name of the track.
Rulebooks are now reusable.

This makes them easier to extend via Lua by having a default
constructor, and a full TrackEntry is provided in case the Rulebook
wants to do any specific processing based on the extra metadata.
Fix track_name when no TrackEntry has been set.
Remove unused member var.
Add initial rulebook registration bits.
Use insert instead of emplace.

This fixes compilation on GCC 4.6 (std::map::emplace is implemented in
4.8).
Rename "rules" dir to "rulebooks".
Promote RunScript() from SysEnv to Env.
Add basic class documentation.
Fix Unicode with default SysEnv logging impl.
Set return value for RunScript().
Execute rulebook scripts on startup.
Add Find().
Allow rulebook to be set in game:start_practice()