I found the way that the redact expression was being provided through
the RedactedDBCollectionConstants to be a bit confusing and indirect. I
got rid of that class in favor of directly providing the redaction
expression (via a new interface called RedactionExpression) when
constructing the RedactedDBCollection.

So now when you construct a RedactedDBCollection, you pass in the
DBCollection, the SecurityAttributes, and the RedactionExpression.

I created a simple class called CapcoRedactExpression that embeds the
redaction expression for CAPCO. When you construct the
CapcoRedactExpression, you specify the "securityFieldName", so that we
don't have to hard code the field name to be "sl".

There's still this implied contract between the RedactionExpression
implementation and the SecurityAttributes that I don't really like. In
my simple mongo shell redaction examples in the doc, I use a security
marking that's just a simple array of strings. Our current
implementation pretty much assumes that we're using an array of arrays
containing objects.