added public PythonFunction constructor

no support for functions with closure
covers use cases from cp35180 and cp34932
more improvements to FunctionType

added optional parameter constructors
changed ArgumentException to NotImplementedException
Merge pull request #194 from paweljasinski/tinker-with-pythonfunction

added public PythonFunction constructor
It fixes the biggest inconvenience. The complete implementation including non module level functions and functions with closure can be added later.