Added modified version of DocumentFeature.from_string, based on a stackoverflow question. Previous version had a bug (incomplete invalid input validation). Converted the build process to setuptools instead of distutils