Use an array-like object (like jquery) & reorganize project.

This PR makes quite a few changes to this library. The goal of
the PR is to make it more comparable with jQuery and compatible
with modern browsers. Made a few changes to the tests for the breaking
changes, but otherwise all tests pass as before.

Here's the changes this PR made:

* BREAKING: array-like object. dom('p')[0] instead of dom('p').get(0)
* BREAKING: merged .each and .forEach and changed API. signature is now `function(el, i) {}` with the context (`this`) being a list with one item for chaining. ex: dom('input').each(function(el, i) { this.addClass('hi'); el.parentNode.removeChild(el); })
* REMOVED: .get(i), .length()
* improve browser support of .text()
* improve browser support of .css() by using jquery's implementation of .css() (via matthewmueller/css)
* improve API compatibility with jQuery adding better handling of element sets for: .prepend(), .append(), .insertAfter(), .appendTo(), .is()
* improve fluent api for .map(), .reject(), .select(). ex: inputs.select('type == password')
* added native array methods to dom to support joins, sorts, etc. ex: inputs.map('type').join(' ')
* use component-test to run tests