refactor, add docs, write tests

Not sure if you want to pull this in because it changes the functionality, but I added more docs, a few features, and some tests.

Biggest change is it now counts special characters. Ex.

```js
var str = 'turner & hooch';
assert(3 == wc(str))
```

That's better for my purposes but maybe you needed word count to mean something different.