logger.go: Fix ansi stripping on file io.Writer

Use reflection to check the type of the io.Writer instead of checking for
os.Stdout and the like.
logger.go: Change the visibility of the logger struct

Make the logger struct not publically exposed by default.
logger.go: Add setter and getters for the logger object
Rewrite TestHeirarchicalPrintln to use logger object
Add TestHeirarchicalDebugln