Slightly improved API. Dramatically improved implementation

I dramatically improved the implementation of encode and decode to use efficient bit-twiddling and scaling to perform the morton-code encoding and decoding in constant time with only a few operations.  The resulting code should be significantly faster.

I also changed the api to use pass-by-value where it was more efficient and more appropriate for a C-API.  The resulting call-by-value change decreased error checking and should increase performance over pass-by-reference