Add support for heirarchical logging

A map is used to store encountered function names with the value being the
level number the function was encountered at. The heirarchical level is
converted to a string and padded with spaces to show sub-heirarchy with the
previous level using the default settings.
gitignore: Add TODO.rst