Adding targets for profiling, optimization, and code coverage
Added alternate implementation of string icmp

In Phobos uni.d implementation of icmp, it is noted that
the implementation given takes a performance hit to be
pedantically correct. This implementation assumes vanilla
string-like types, and necessarily puts the new implementation
at 1/4th as much total time-in-function compared to library icmp.
Small change that halves execution time of cpy ctor

Alleviates copy of large string, instead just points to
existing string
Added version(PARSETREE) code that adds auto parse tree generation
Added contracts to Stack push and pop
Formatting, added pure nothrow to simple functions
Merge branch 'optimizations' into allUnmergedFeatures
Added calling rehash for op hash, gives decent speedup
Merge branch 'optimizations' into allUnmergedFeatures
Merge branch 'addContractsAndCTFE' into allUnmergedFeatures
Merge branch 'parseTreeImpl' into allUnmergedFeatures

Conflicts:
	DParse.d
	Makefile
Merge branch 'allUnmergedFeatures' into mergeAllUnmergedFeaturs

Conflicts:
	DParse.d
	Makefile
Updated ast2.d Stack impl, added pretty print content

Also added an ElementASTNode subclass
Fixed charClassMatch bug, updated unittest, fixed trimWhitespace bug
Merge branch 'allUnmergedFeatures' into alternateASTApproach

Conflicts:
	DParse.d
Removed ast.d file, updated Makefile