snabbdom fixes and refactoring
Primarily fixes each functionality for snabbdom, with tests and updates to ensure that child node lists are flat (comprised of single elements without superfluous nesting of arrays, which virtual-dom happily accepts but snabb does not). Most significantly the implementation of visitEach no longer uses Array.map but instead loops through nodes running Array.concat to keep lists flattened.
Internally, continues a longer-term cleanup project with some minor lib code refactoring and lots of test cleanup (expect.js replacing raw node.js asserts for better failure output, docstrings, etc).