Initial implementation of writeStringAP
Implement writeCharacterStringAP

A slightly more interesting example of how to make use
of WriterT to convert an existing Writer to a new Writer.
Implement writeOctetStringAP'

Another example of using contravariants to implement a useful
Writer from an existing Writer.
Add another test for writeStringAP
Refactor Tag.hs

The implementations of writeStringAPTag and writeOctetStringAP
used almost identical code to write their tags. Refactored into
writeAPTag