Used valgrind on the unit tests

- Adding/experimenting va_list version of variable argument
  string initialization functions. Work in progress.

- After running many (not all) tests via valgrind did:
     * Corrections to many unit tests so that memory is
       managed correctly
     * Fixed many bugs in numerous string functions, where
       memory out of bounds was accessed
fixing some tests/functionality thanks to valgrind
tests now run with valgrind, and flake8
valgrind does not complain about std streams and flake8 on python
added tests for string initialization via va_list
more va_list string init tests, and also better abstraction of said functions