Fixed bug when using 'class' attributes in TI

Because 'class' is a reserved word in Javascript, Coffeescript helpfully
converts hash keys named 'class' from hash.class syntax to hash['class']
syntax. While this works in most Javascript environments, in Titanium an
error is thrown when trying to access an array-like ([]) accessor on a
Titanium view.

This patch converts 'class' attributes to '_class' when set via .attr.

* Note: One possibility to work around this was to use `className`
instead of `class`. The problem with this is that Titanium treats
className differently on TableViewRows and makes assumptions about the
similarity of rows with matching classNames that may not hold true.
Improved attribute matchers

Added support for viewName.className selectors. The matcher logic was
also extracted to tb/lib/ti/helpers/matchers.coffee for reuse by find()
(which will be included in a future commit).
Created addClass, removeClass, and hasClass

These methods are included in the `attributes` extension module.

`addClass` and `removeClass` support both single and space-separated
class names. `removeClass` additionally accepts an empty argument to
remove all classes.
Added 'find' traversal method
Replace dashes with underscores in app id

User reported that Titanium complains when given an id with dashes.