Refactored data-race detection into RaceDetector plugin.
Refactored plugins and error logging into Context class.

Context holds device objects (currently only one), global memory, and
provides entry points to dispatch simulation callbacks to plugins and
log error messages.
Use getPointer/setPointer where possible.
Install Context.h and config.h.
Implemented dynamic loading of plugins with --plugins argument.