Allow user defined encodings.

Add encode_with_encoding and decode_with_encoding which
allow the user to use pluggable encodings rather than just MIME::Base64.

Change encode and decode to just specify their encoding functions based
on MIME::Base64.