don't generate empty strings because they are useless
CON-21: Prevent the adding of empty keys and empty string values

Added a check on the client to prevent sending empty keys and empty
string values over the wire. If the client sees these on an attempt
to add or remove, then it just returns false (no exception thrown).

This is implemented client-side because it requires the least amount
of code delta and makes sense because all interaction with the server
must go through the client. We do not throw exceptions because
that seems unnecessary. We just return false, but we may revisit
that choice in the future.
fix bug in random string generation
keep fast smoke tests in separate file