Resolved segfault issue with bot_mk1::~bot_mk1()

Issue @B9 : Final fixes for segfaults. The destructor segfaulted
when called on a cloned bot_mk1. This was due to the fact that
clones have a null tcp_socket_p, and I was not checking for that
case. I also cleaned up a potential problem with calling join on
non-running threads by adding joinable checks first. Creates
accuate clones and destructs them cleanly now. Unit test updated
to validate clone; tested good.