Added a Criteria DSL

This change-set includes a DSL for creating `find` selectors using Scala syntax.  Right now, "ad hoc" criteria can be created that can become a `BSONWriter[Expression, BSONDocument]` implicitly.  The test spec in UntypedCriteriaSpec.scala shows most of the operands supported and the BSONDocument instance emitted from the DSL.

I planned on doing a macros-based version which would roughly have the syntax of:

```scala
val q = criteria[SomeType] {
  propertyA.in ("propertyA", "must", "be", "in", "SomeType")
}
```

But haven't done so yet (before doing that, I wanted to find out whether or not the DSL is desired at all :-)).