BooleanSubscription: Add Action Support
Remove Unnecessary Subscription

- be explicit for error case in JoinObserver
Code Reformatting
Refactor RefCountSubscription

- simplified logic
- remove unnecessary busy spins and state changes
Refactor CompositeSubscription

- simplified state machine
- removed busy spin state
Refactor MultipleAssignment

- simplified state machine
Refactor SerialSubscription

- simplified state machine
Naming and Class Conventions

- make concrete implementations final as extending them is dangerous (use composition and implement Subscription instead)
- deprecated long get/setSubscription methods in favor of short verbs (add/get/set/clear/remove)
- updated unit tests with changes
Merge pull request #661 from benjchristensen/subscriptions

Subscriptions Rewrite