Added additional way to call encoding-related functions

At the moment we have related families of functions for encoding tasks. This
approach isn't entirely sustainable as the number of supported encodings is
likely to grow substantially:
 - bs_save_base64
 - bs_save_hex
 - bs_save_base16
 - bs_save_base32
 - bs_save_uuencode
 - ...

I've added some functions with the following signatures:

    BSresult bs_decode(
    	BS *bs,
    	const char *encoding,
    	const char *input,
    	size_t length
    );

    size_t bs_encode_size(
    	const BS *bs,
    	const char *encoding
    );

    BSresult bs_encode(
    	const BS *bs,
    	const char *encoding,
    	char *output
    );

Here the ENCODING string specifies the encoding, e.g.:

    bs_load_hex(bs, hex, length) === bs_decode(bs, "hex", hex, length)

This makes it much easier to add more encodings in the future. Future commits
will need to:
 - remove the original functions from the header
 - implement a better way of looking up function names
 - allow client code to check what encodings are supported
Removed functions for specific encodings from public header
Fixed tests to use correct encoding functions
Renamed source and test files

Removed the bs_ prefix from most filenames, and tidied makefile to match.
Fixed up #ifdefs in header files
Added missing header to encodings source files
Renamed encoding functions used internally
Trivial code style changes
Moved pointer checks from encoding functions to top-level caller
Fixed cast to remove compiler warning