Add new unittest tests

Test that calling begin.start() returns true when the __name__ global
variable has the value '__main__'.
Use unittest2 with Python2 interpreters

Attempates to import unittest2, if the import fails falls back to
unittest. The unittest2 is a requirement for testing with Python2
interpreters.
Improve compatability with Py2 and Py3

Use imports from __future__ to make language behaviour as consistent as
possible between Python2 and Python3.
Add mock package as a requirement for testing

Mock is added as a dependency to aid in unit test development.
Add new unittest tests

Test that decorating a function with begin.start outside of the __main__
module does not result in a call to atexit.register.
Add new unittest tests

Test decoarting a function when mocking __name__ to be '__main__' will
call atexit.register.