Check pad character before trying to pad string.
Gives us the option not to pad by setting b64pad to the empty string.
Only parse JWS string once.
Store parsed header for access in calling application.
Allow passing in RSA N, E and D as numbers so we can read keys in
using a different library.
Fix bug in signing (wasn't passing through 'this')
Updated jsbn to latest version from http://www-cs-students.stanford.edu/~tjw/jsbn/
Add OAEP padding support, with help from:

http://webrsa.cvs.sourceforge.net/viewvc/webrsa/Client/RSAES-OAEP.js?content-type=text%2Fplain

https://groups.google.com/forum/#!topic/crypto-js/VotElO00yHc
Pass hash function down to OAEP pad/unpad. Defaults to SHA1 (OpenSSL is
hardcoded to OAEP-SHA1!)
Add PKCS#1 PSS padding, with help from https://github.com/digitalbazaar/forge/blob/master/js/pss.js
Speed things up significantly on node.js:

- New ByKey functions for signing and verifying. Can use existing RSAKey
  instance (pure JS) or a ursa key instance (https://github.com/Obvious/ursa).
- Don't parse into bigint until we need to.
- For utf8<->b64u conversion, use node.js Buffers if available.

Using ursa keys makes a huge difference. For 100 sign+verify operations for
empty payload on IvyBridge i5, time is reduced from 22s to 300ms!
ursa is a wrapper around OpenSSL.

I checked that signatures generated using ursa keys can be verified using
RSAKeys and vice versa.
Fix bug in b64 url decoding
Just in case
Merge pull request #1 from davedoesdev/master

OAEP and PSS support