Optimizations for multiply: re-order args depending on relative size,
fast path for 1 word args, use extra register to reduce shifts
Add initial implementation of homogeneous projective coordinates for F2m
curves
Move tau function to ECPoint.F2m and optimise for projective coordinates
New class LongArray equivalent to IntArray but using 'long' words.
Minor re-ordering of setup
Various small refactorings
Use square32 instead of square16
Use an extra "register" in multiply to save 1/4 the shift-adds
Improve naming in multiply
Add a couple more "registers" to remove 1/4 of shift-adds
Pass explicit count to shifting methods
Reduce further the number of shifts required in multiply
Port multiply improvements across from IntArray
Add the rest of the SEC curves
Add support for width 3 in multiplication interleaving
Switch over to using LongArray
Move F2m reduction inside the multiplication and square methods (renamed
to modMultiply and modSquare)
Implement multiplication in width 7, and configure a width 8 option,
both only for lengths much longer than involved in typical curves
Add table and methods to support interleaving by 5s
Add support for width 5
Optimize interleaving by 4s
Change minimum width to 4
Remove old code