Make Imagine more hackable, remove final keywords from classes and functions declaration

This solves #162.

After thinking about it, I think we should open the interface so Imagine would be more hackable. I don't think classes should be extended, anyway, if some use case require it, let's give developers the ability to do so.

I propose to do it now as it would solve an issue toward version 1.0