Add option to set a custom view for notifications.

This is just a preview PR to get some preliminary feedback before I submit this upstream. @djsell, could you take a look?

---

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 this cost.
Why is it difficult/impossible to manage extra state on custom views?  Can't you just cast the resulting view to the type you need it to be?

I think runtime errors is fine.  Just throw a useful error message informing the user that a subclass of CRToastView was expected.