identifies situations where its restricted by open_basedir.
We now track more informatoin about the toolkit including the version
and any errors we encountered while doing the detection so that we can
provide more info downstream. This makes graphics::detect_toolkits()
a little heavier, but that's ok because it should not be called very
often.
In the process, refactor the controller and view hierarchy so that
it's a little more straightforward in the code.
Fixes ticket #616.