Added the knowledge conversion code for the base Constant type
Added the initial code for the knowledge conversion of the GlobalValue type
Finished implementing the knowledge conversion logic for GlobalValue
Modified the custom routing logic for the base constant type

I changed the else condition to call the false version custom routing logic if
we can't figure out what the type of the object is.
Added defintions for GlobalValue and GlobalAlias
Added some missing semi-colons to the end of the Constant type trait structs
Added a macro to Traits.h to make Supertype only populates easy to do.

Sometimes there are types that do not contain any new methods or fields. In
this case, the super type is the only call found in the populateKnowledgeBase
method of the target type. I have added a macro
KNOWLEDGE_REPRESENTATION_POPULATION_ONLY_CALLS_SUPERTYPE to handle these cases.
Registered the UndefValue type
Registered BlockAddress and ConstantAggregateZero
Registered the ConstantArray type
Registered the ConstantExpr type
Defined ConstantInt and ConstantFP types
Defined the ConstantPointerNull and ConstantStruct types
Defined the ConstantVector type
Added routing logic for functions to GlobalValueKnowledgeRepresentation

The actual knowledge conversion will be handled in another file, however a
Function is a global value so it's necessary to support routing it. The only
caveat is that only the name will be generated if it turns out that the pass
isn't a module pass
Modified the function routing logic in the GlobalValue router

I set it up so that the function router handles the actual naming instead of
the global value one.

This makes it more flexible as well as modular
Added the FunctionKnowledgeRepresentation header

It defines the routing logic for the FunctionKnowledgeRepresentation
Added a missing curly brace to the end of FunctionKnowledgeRepresentation
Fixed a naming issue in FunctionKnowledgeRepresentation.h