Add support for conditional compiling

Now supports #IFDEF, #ENDIFDEF, #IFNDEF, #ENDIFNDEF, and single
recursion
Better logging