add IEmpty protocol for collections
add tests for first
return nil when nth is out of range on arrays

this also fixes `first` on arrays, which is especially useful when
destructuring arguments in a function.
expose an internal version of -defprotocol

it's internal because we probably want to enable multi-arity protocol
methods and implement a `defprotocol` macro like clojure has.
support running only a subset of the tests
Merge pull request #65 from heyLu/collection-bits

Collection bits and running tests selectively