Base58 en-/de-coding

The base58 codec uses full length bignum operations for each digit and `strchr(pszBase58, *p)` to find the value of each base58 digit.  I've cleaned up the implementation by:

* using bignum operations with word-sized operands
* using a pre-computed decoding table
* adding comments
* getting rid of useless copy operations

As with my other recent pull-requests I think I've made the source easier to understand and the speedup is just a side benefit.

However, I could not restrain myself and added a last commit which is a much faster version, converting 5 or 10 digits at a time (depending on `sizeof(BN_ULONG)`).  Esulting in an overall speedup of over 10 times.

If your prime interest is in simple code, please pull all but the last commit.
If you don't mind a bit longer, but much faster code, pull the whole branch.