Add option to set a custom view class.

This changeset enables the creation of custom layouts for notifications. I had to make a few things public that weren't before, namely the option defaults system and some parts of `CRToastView`, but hopefully the extra functionality is worth it.
This has the same behavior as `isKindOfClass` for instances, but will also work as expected on `Class` objects.