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
fixed cp35212 - allow mixing string and bytes in args of string methods

all string methods accept bytes in place of string
all string methods accept extensible string in place of string
all bytes methods accept strings in place of bytes
corrected argument names for replace
added dedicated test_str_bytes.py
simplified mixing of buffer as argument of str.replace
added buffer and bytearray to types covered by BytesConversion attribute
corrected replace parameter names
removed no longer used function
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.
Merge pull request #198 from paweljasinski/cp35212

 fixed cp35212 - allow mixing string and bytes in args of string methods
corrected parameter names of str.replace