Reworks tests

Adds support for unit tests!

The 'tests' package now takes arguments --unittests and --functests.
Travis scripts were updated to no longer use run.py.
Adds tests for unique names generation