Modified test cases to match typed versions.
Created separate `pushEach` and `addToSetEach` bindings.

Rather than have an `Update.each` function that would take either
`Update.push` or `Update.addToSet`, have separate functions to be
consistent with the computation expression version.
Made `Update.pull` take a lambda expression as an argument.
Made `Query.elemMatch` take a lambda expression as an argument.
Refactored $sort implementation for code quotations.

Instead of using an intentionally unchecked query to compare a field to
the value +/- 1 to follow the semantics of the shell operator, defined
new functions that match the conventions of the computation expression
  - `Update.sortListBy`
  - `Update.sortListByDescending`
  - `Update.thenListBy`
  - `Update.thenListByDescending`

Note that the query/update parser functions are no longer dependent on
the `bson` function.

Based on the time execution for the tests, it may be worth optimizing
the pattern matching code somewhat for which case comes first, avoiding
too many deeply nested active patterns. This is why the `|>` and `>>`
cases are defined separately.
Removed outdated information from README.

Also updated description slightly.