Bind type as constants and use invokeVirtual to call read/write methods
Store indy method handle bindings in the classloader

Prevously, the were stored in a "callSites" field in every generated class.
This approach has a couple of benefits:
* No need to generate or remember to set the callsites field when the class
is loaded
* No need to use "volatile" for the callsites field
Remove unused method
Cache compiled PagesHashStrategy classes
Generate calls on Type class instead of on concrete subclasses

The generated code may not be able to reference type classes by name if
they are on a different classloader (e.g., plugins)
Fix broken signature generation for array types

The code wasn't taking into account whether it was dealing with an array type,
which resulted in invalid method signatures being generated.

E.g.,

(IL[Lcom/facebook/presto/spi/block/Block;;)I

instead of

(I[Lcom/facebook/presto/spi/block/Block;)I