made the multiple_returned_values in ServerResponse be a new KeyValue type which is just...a key and a value, duh. Also implemted the RETURN_ATONCE_RANGE_ITER ServerQuery type in leveldb_server.py and echoclient.py

-----------------
exported from bzr_postcommit_to_git.py,
going from bzr commit:
79:markgrandi@gmail.com-20140829001323-sshooyn50bp8wpot =>
80:markgrandi@gmail.com-20140829045439-5iw3eyl3aqp6083t
minor documentation change + not implemented logging error message

-----------------
exported from bzr_postcommit_to_git.py,
going from bzr commit:
80:markgrandi@gmail.com-20140829045439-5iw3eyl3aqp6083t =>
81:markgrandi@gmail.com-20140904195857-qmsmeqxhsf59slqd
Started preparing server_database.py to interface with leveldb_server.py, added a _socketRecv, _socketRecvWithSizePrefix and _socketSend method to implement the logic of sending and recieving the messages to/from the client, since this will be using 'sockets' where they don't necessarily send or recieve all the data at once so you need to check that. The third one is also a helper method that reads 2 bytes to get the size prefix , and then reads the rest of the data.

I also made it so that the _log() method (and the subclass overrides) take a 'severity' parameter, in case we want to log something other then debug

-----------------
exported from bzr_postcommit_to_git.py,
going from bzr commit:
81:markgrandi@gmail.com-20140904195857-qmsmeqxhsf59slqd =>
82:markgrandi@gmail.com-20140904230513-xs56t4wtt62969jr
Added a utility method to take a protobuf Enum and return the 'friendly name' of it (given the reflection object and the enum type name), also did the same treatment i did with server_database.py where technically, the data_received() method can be called with bytes, but it not might be the complete message, so i added functionality to read the first 2 bytes to get the size of the rest of the message, and then if we don't get SIZE bytes in the rest of the data, then we save the state and resume on the next data_received() call. This is more complicated then the server_database.py implementation (_sockRecv/Send) because the only way we get data is when asyncio/Protocol calls our data_received method, so we have to save state in the class and whatnot.

Because of that, i separated data_received into reading the data and putting together the chunks if necessary , and then once the message is complete we we call complete_data_received().

also made it so that we append the data that we send to the client with the 2 byte size prefix.

-----------------
exported from bzr_postcommit_to_git.py,
going from bzr commit:
82:markgrandi@gmail.com-20140904230513-xs56t4wtt62969jr =>
83:markgrandi@gmail.com-20140904230858-mb5tyidu3tva0ohs
modified the leveldb_server_messages.proto file to have the keys and values be bytes rather then strings, in case i ever do actually want to send bytes, and since leveldb works with bytes anyway it makes sense. The other changes to leveldb_server.py and echoclient.py were to make it so it sent bytes rather then strings and processed bytes instead of strings

-----------------
exported from bzr_postcommit_to_git.py,
going from bzr commit:
83:markgrandi@gmail.com-20140904230858-mb5tyidu3tva0ohs =>
84:markgrandi@gmail.com-20140905045014-jr2xkplf0m2t9s6a
Work on making server_database.py talk to the leveldb_server.py, fixed a typo in _socketSend, implemented the workflow for the __get__() method, need to do various error checking later...

-----------------
exported from bzr_postcommit_to_git.py,
going from bzr commit:
84:markgrandi@gmail.com-20140905045014-jr2xkplf0m2t9s6a =>
85:markgrandi@gmail.com-20140905060435-kv30jfteeicy81xk