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.~~

* **REMOVED**: .get(i), .length()
* reorganize library using jquery's documentation for categorization
* improve browser support of `.text()`
* improve browser support of `.css()` by using jquery's implementation of `.css()` (via [matthewmueller/css](http://github.com/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: `var types = inputs.map('type').join(' ')`
* use component-test to run tests

p.s.- sorry for the big PR :-P