SMPP needs to have a pluggable codec class.

It is possible for MNOs to give us messages that are in an encoding that aren't in the [standard encodings](https://docs.python.org/2/library/codecs.html#standard-encodings) that Python ships with.

We have two options:

1. Register a new codec with the [codec registry](https://docs.python.org/2/library/codecs.html#codecs.register).
2. Create a pluggable codec class for SMPP that fallbacks to python's codec registry for things it knows about but provides hooks for providing other encodings.

We've chosen to go with option 2 because adding a codec to the registry introduces all sorts of potential code loading race conditions.


So this matches what's output by ``smspdu`` (https://pypi.python.org/pypi/smspdu) except that ``smspdu`` doesn't hex encoded it. The 7-bit packing happens inside ``smspdu.pdu`` which packs the bits into the PDU. I can't find any equivalent code in ``python-smpp`` so this might not work until we add that.