orlyi: Add command for listing packages to the websocket interface
Merge pull request #105 from cmaloney/oryli_list_packages

orlyi: Add command for listing packages to the websocket interface
base/json: Add a simple Read() which reads in a whole json file.
base/json: Eliminate some unnecessary copies (Force move of everything instead)
base/json: Include what was found as well as what is expected.
base/json: Match exactly what is asked for

Before we greedily matched anything which was not whitespace. So we'd read in commas after exact matches, for instance "true,".
base/json: Better error message
base/json: Add converting TJson::TKind to logical strings
base/json: Add missing nothrow
base/json: Escape all the things we're supposed to so web browsers are happier with our json.

NOTE: This doesn't currently read in all the escape sequences. We just print them right.
base/json: Implement our own string reader which does escaped things properly.
base/json: Allow unqoted strings
base/json: Add some utilities for mutating in place
base/json: Include filename when we error inside a file
Switch <base/cmd> to use <base/json> rather than <starsha/note> for args file parsing
base/stl_utils: Use nullptr
base/stl_utils: Remove outdated Find() function

.at() provided by the STL gives the same semantics.
base/subprocess: Add a WaitForAll which waits for any child process to exit
jhm/naming: Add 'Contains' to TAbsBase
jhm/naming: Add two more convenience functions