Fix spec data for QM.flatten
Fix bug assert.isObject

- use direct call to QM.isObject to deal with IE8 issue identifying null as object
Add more promise specs
Re-organize core functions into separate namespaces

- tries to make it more clear what functions work on objects,
arrays or both and return arrays or objects
- remove any shim related functions: require library like es5-shim
Rename source file for qm-match
Rename QM.isIterable to QM.isIndexed
Add Objects.keys and Objects.create

- use simple shims that meet requirements for Quartermaster