Fix scoping in Promise.all and tweak specs
Fix bug in QM.reduce

- need to skip first element as current value when used as initial
Improve specs for QM.fold and QM.reduce

- using zero gave mis-leading results in QM.reduce which masked defect
Add QM.compact
Add QM.firstAssigned
Fix QM.reduce to work with sparse arrays

- uses QM.firstAssigned if first element does not have assigned value
Add qm-try and qm-option modules

- based on Scala's Try and Option types
Add QM.findIndex

- refactor QM.firstAssigned to use QM.findIndex
Rename for API consistency

- Events.each renamed to Events.forEach
- Signal.changes renamed to Signa.events
Fix bug in Events.merge
Add support to Events.merge for array of event streams
Fix indentation  in spec
Add support for custom notification for Signal
Re-organize util module
Add Signal.toJSON
Re-write observable module

- simplify and reduce inconsistency in updating properties and emitting changes: only one event stream is used
Refactor aggressively for 0.4

- change general function signatures to match convention in other FP languages: function params listed first
- simplify assert methods and messages
- refactor internal versions of functions
Tweak assert message rendering

- allow for format args for dynamic placeholders
Add Observable.getOrElse
Remove duplicate code for object and array collect

- use one function to handle both using accumulator