Use standard tolower/toupper

refs #1
Switch to isalnum and isprint

refs #1
Use strlen

refs #1
switch to std::list in two places and add tests

The tests will require you to setup gtest.
refs #1
split into lib/exe for testing

If we want to test the bot we need to split the client out away from the
bot core itself.

refs #1