Add Observer.swift

- protocol: QObserver
  Requires a mutating disconnect() -> Bool function and a property
  isConnected: Bool {get}. In other words, partly what the observers
  already have and partly something they should have.
- Implements a generic func disconnectObserver(inout T: QObserver).
- Implements a generic func disconnectObservers(inout [T: QObserver]).
Add QNotificationObserver.isConnected: Bool property.

Makes QNotificationObserver conformant with QObserver.
Remove disconnectObserver(inout QNotificationObserver).

No longer necessary.
Add QKeyValueObserver.isConnected: Bool property.

Makes QKeyValueObserver conformant with QObserver. Same deal as with
QNotificationObserver.
Remove disconnectObserver(inout QKeyValueObserver).

No longer necessary, again.