Adding new exception about wrong types
Adding Function.pm to be the interface of manipulation of the 'DATA' field
Adding RVM with the right code execution
Adding main which can accept tests (the program MUST end with a null pointer)