Base58 isolation and preparation for Buffers

In preparing the code base to use `Buffer`s, I have isolated the `Base58Check` module (reference: https://en.bitcoin.it/wiki/Base58Check_encoding) from the typical Base58 code itself.

This provides a simpler and more coherent API for dealing with Base58, and removes the ambiguity that existed in the names `checkDecode` and `checkEncode`, which (IMHO), sounded more like functions of a reductive nature, rather than transforming.

A main point of interest is in the use of transitional `FIXME`s scattered between `script.js`, `jsbn`, `convert.js` and `hdwallet.js`.
They exist in where the use of arrays is such that it does not bode well with `Buffer`s.
I hope to remove this ASAP with a more `Buffer` oriented API.

A secondary point of interest is in the use of `require('crypto')`, and `crypto.createHash('sha256')` versus the `crypto-js` equivalent.
Aside from the obvious: "works with Buffers" comment, I also find the API to be more coherent and traditional.
But that is all obviously up for discussion.

Related to #106, and perhaps spikes renewed interest in #24 (due to JSBN being unfriendly with Buffers)



**edit**: Tests on Travis CI are currently failing, but not locally.   Will investigate.