Lots of library updates

added smart pointer for thread allocation.
reorged library in namespaces.
fixed unit tests in tests folder.

added several untility read/writes:
``` cpp
size_t read(void *data, const size_t size, const size_t count);
std::string readline(void);

uint128_t read128(void);
uint64_t read64(void);
uint32_t read32(void);
uint16_t read16(void);
uint8_t read8(void);

size_t write128(uint128_t bytes16);
size_t write64(uint64_t bytes8);
size_t write32(uint32_t bytes4);
size_t write16(uint16_t byte2);

size_t write32(uint8_t byte1, uint8_t byte2, uint8_t byte3, uint8_t byte4);
size_t write24(uint8_t byte1, uint8_t byte2, uint8_t byte3);
size_t write16(uint8_t byte1, uint8_t byte2);
size_t write8(uint8_t byte);

size_t write(const uint8_t *bytes, size_t length);
size_t write(const void *data, size_t size, size_t count);
size_t write(std::string str);
```