Code modernization for multi-platform support. API improvements. Also Python binding.
Changes:
* Replaced the build system using CMake
* Removed the deprecated usage of hash_map and hash_set. They were replaced by unordered_map and unorderded_set as per latest C++ standards. This also made the tool compilable in major platforms like Ubuntu/Linux, Windows/VC++, Mac
* Cleaned up the code for consistent indentation
* Replaced usage of Char* in many places with std::string since it allows high level string manipulations without worrying on low level details
* Python binding for SFST and created CI pipelines to build source and binary distributions including python wheels for multiple python versions in multiple operating systems.
* Changed the fst interface methods so that analyse, generate methods can return an array of strings instead of requiring file pointers. This allows other programs to use SFST as library.