WIP: replace bignumber.js with bn.js

This is part of an experiment to replace bignumber.js+cryptojs with @indutny's bn.js+elliptic. Hopefully this will result in faster cryptography. I have run some trials on the speed of the mocha browser tests after this change:

```
Trial #1

fedor’s bignum library:
42.27s in firefox
37.14s in chrome

old library:
43.03s in firefox
39.09s in chrome

Trial #2

fedor’s bignum library:
42.38s in firefox
36.96s in chrome

old library:
43.32s in firefox
43.87s in chrome
```

...so the tests are not any faster or slower. However, I have not made any direct speed comparisons between the bignum libraries, and I have not yet changed the elliptic curve code. The slowest operation is point multiplication, so that will be the ultimate test.

This PR is labeled WIP because, although all tests pass and it all works as far as I can tell, it touches a whole bunch of code, so I want to review some more and write more tests before I consider it finished.