First cut at enabling Battlelog Cache

Refactored fetchWeb... to switch on use_direct_fetch flag.
updated built-in doc
first working version with cache
battle.log notes cached
initial 0.9.4.0, doc cleanup
Fixed #36, detect aborted round
Fixed #7, advanced replacements
added yell support, fixed #10
clean up readme
improved isRoundReset handling
9.4 update: Battlelog Cache enabled

Added use_direct_fetch setting.
Fixed detection of aborted rounds, so that OnRoundOver limits work.
Fixed aliasing of advanced replacements.
Added SendPlayerMessage, Send*Yell functions and actions.
Extensive overhaul and cleanup part 1

In the course of attempting to debug the Blitz lock-up issue,
many lines of code were reviewed and cleaned up, including:
* Interlock between fetch and enforcer made rigid, no overlap of exec
* TeamChange limit eval completely rewritten, now uses a thread
* Cleanup of all logging, DebugWrite levels incremented +1 to
reflect the default of 3 which no one ever lowers, and yet many
complaints of too much log spam.
* Miscellaneous other clean ups, too many to list

Lock-up problem still not fixed, may not be fixable in IL
minor cleanup around CacheResponse
Added Friendly functions
Version 9 patch 5

* Stats fetching speed-up, shaved 3 to 5 seconds off of every fetch
* Added plugin.FriendlyMapName to convert "MP_001" to "Grand Bazaar"
* Added plugin.FriendlyModeName to convert "TeamDeathMatch0" to "TDM"
* Reduced logging spam, particularly for stats fetch errors
* Major overhaul of handling of TeamChange events/limits
* Tons of minor bug fixes
* General clean-up
Version 9 patch 6

* Fixed TeamChange bug introduced in 9.5
* Fixed OnLevelLoaded spurious report of aborted (round reset)
* Fixed issue #13, friendly map names and modes
Had to restore round_start_delayed thread
Revert "Had to restore round_start_delayed thread"

This reverts commit fc9083a312954a126c23d9d96a5af3423fa11598.
Eliminated OnPlayerSpawned delay altogether

Rely on async map info update from OnLevelLoaded
Adding delay in the main thread blocks io to rcon, so no point doing it.
To really sequence the round start with first spawn, I'd have to
queue up spawn requests until after the round start finishes synching.
Too much hassle, so instead, just run the risk of map info
being out of data for RoundStart limits.
More fixes included in 9.6

* Fixed spurious round start detection for late player spawns
* cleared recent moves on level loaded