Add PrimitiveFunc and Func constructor for the LispVal type
apply' :: LispVal -> [LispVal] -> IOThrowsError LispVal
Update showVal with new constructor PrimitiveFunc and Func
primitiveBindings :: IO Env
to load the default primitives environment
Add some helper function to ease function creation
Add the means for the user to add function definition of his/her own