Add some comments
Refactor the code a bit so its easier to use

 * Added some tests for sanity check
 * Did a bit more documentation here and there
Minor fix to the test CLI script
Ignore ctags file