Working on socket API.

Removed the socket namespace since it adds lexical overhead.
Started a test suite by moving all of the static asserts out of
the implementation and into a testing directory.
Cosmetic changes to socket.

Mostly refactoring to put operations inside classes.