Moved query and update quotation parsers into separate files.

Easier to maintain since the components are logically distinct. Also,
because of @47bd2a8, the parsers are not dependent on the `bson`
function anymore.
Consolidated definitions of List pattern.
Changed all helper pattern to use implicit pattern matching.

Rather than define as function that takes an `expr` parameter and then
call `match expr with`, use the`= function` form.
Cleaned up the query parser a bit more.
Changed return type of query parser to option.

Rather than using `failwith` when dealing with an unrecognized
expression, simply returns `None`.
Changed return type of update parser to option.

Rather than using `failwith` when dealing with an unrecognized
expression, simply returns `None`.

Also cleaned up implementation a bit. May eventually not want to use
the `updateParser` function with the computation expression patterns
simply because it is really more trouble it is worth to transform the
code quotations to that form.
Fixed #15; issue with multiple update operations.

Now handles when the same key name (operation, e.g. $set) already
exists in the update document that is being built by joining the
associated values (a BsonDocument) together.