Support service-oriented architectures, scope cache to scenarios, and sort JSON in POSTs to avoid duplicate cache files

These changes include several features that were required to use puffing-billy at Centro.

New features include:
* Ability to whitelist specific ports
* Ability to always cache specific paths on any host
* Ability to ignore URL ports consistently in cache keys and files
* Ability to scope scenarios and/or specific blocks of code (to generate/use different cache files for the same URLs)
* Sorted JSON request bodies to generate/use the same cache key for POST requests regardless of the order of the request body's contents.

Thanks @tmertens and @fohara for doing the hard work!

Note: This also includes two other pending pull requests (thanks @cwninja and @dwhelan!):
* https://github.com/oesmith/puffing-billy/pull/28 (lazy loading Billy proxy)
* https://github.com/oesmith/puffing-billy/pull/26 (lazy loading cache files)