Refactor Signal

- remove Observable parent
- add update(), notify() and equals(), foreach()
Add Signal.now and Signal.update

- Signal.val now deprecated
Add React.ArraySignal
Change event data for ArraySignal.notify
Add Jasmine matcher toBeFunction
Add observable module
Deprecate QM.val for QM.asValue
Add QM.getValue
Rename QM.selectNot to QM.dropKeys

- fixed bug when using QM.filterKeys with predicate function
Change constructor functions declarations
Add comparator to Signal constructor
Remove duplicate lines in Signal.val
Add specs for QM.dropKeys
Change parameters for map function in QM.collect

- key and source object are now passed
Add check in Observable create for function param and return observable
Return value from Signal.update in Signal.val
Add spec for QM.collect
Deprecate QM.type for QM.typeOf
Replace use of QM.type with QM.typeOf
Add grunt `regression` task