WIP: Added concept of extended type

https://github.com/kfgodel/diamond/issues/29
WIP: Added type argument bubbling. Code needs urgent refactor

https://github.com/kfgodel/diamond/issues/29