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.
I split it up: `notificationView` is now internal again and does mostly what it did before, `notificationViewClass` is the new default-fallback option getter to keep this similar to the other properties.

This is also nicer because `notificationView` wasn't really useful to outside callers anyway (because of concurrency and alloc-every-time the instance could be totally useless by the time calling code tried to do anything with it).