Refactored warning into notification and warning

Notification will act as an abstract superclass for
warnings and errors.