Refactored instruction operand handling.

Operands are now retrieved via a single getOperand() function which
returns a TypedValue. The TypedValue struct now has getters and
setters for different types (floats, uints, sints and pointers), which
return and accept the widest (64-bit) versions of their respective
type regardless of internal storage.
Merged InterpreterState struct into InterpterCache class.
Moved WorkItem::CachedBuiltin struct into InterpreterCache::Builtin.
UndefValueVal is a constant operand.
Constant cache accessed via getter, which creates constant if needed.
Replaced get/has/set with getValue/hasValue/setValue.
Using getOperand in vstore_ functions.
Use getOperand() for global variable initializers.
typedef InterpreterCache maps.
typedef WorkItem builtin map and prefix list.
typedef WorkItem variable map.
printf using getOperand() instead of resolveConsrExpr.
Constant expressions now cached.
Initial plugin work.

Base plugin class declared in plugins/Plugin.h. Device loads plugins
during creation. Plugins override callback functions required, which
are fired via Device.

Refactored instruction histogram functionality into an
InstructionCounter plugin.
Install Plugin.h.
Moved Plugin.h to src/core.
Don't install InstructionCounter.h with CMake.
Fixed generation of oclgrind script for CMake.
Simplified EXTRACT_OFFSET macro in Memory.cpp.
Refactored data-race detection into RaceDetector plugin.