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.