My take on polymorphism

So, this is very close to what @carlosmn had. I just abstracted the common `Object` code into the `object.go` file and added a global helper that sets the finalizers for all allocations, so we can re-use it all over the code base.

@carlosmn, how do you feel about it?