Function passing/calling

@namuol

/cc @tjacobs @mea36 @robertjchen 

Related feature: https://github.com/namuol/jv8/issues/9

### Notable changes ###

 - `V8Value` is now a real class, and all other objects inherit from it. It can't be instantiated (private constructor), just like in JS. It saves code because of the default `isBlabla`.
 - Added two Java classes: `V8Object` and `V8Function`. Only `V8Function` can be instantiated and used for argument passing.
 - `V8Function` stores a pointer to a native `v8::Persistent<v8::Function>`. To call this function, you have to use `v8runner.callFunction(function, args)`.
 - The persistent handle is released when the instance of `V8Function` is GC'd (Java `V8Function.finalize` => native `V8Function.dispose` => `persistent.Dispose() && delete persistent`.