text: Title: Improve version comparison in check_schema_version util function
  Body: In the `check_schema_version` utility function, there is custom code to determine whether saved schema versions are older or newer than the current schema version. This comparison could likely be simplified significantly by using the packaging library performing the version comparison instead of the custom code.
  
  Current code:
  ```
          current = SCHEMA_VERSION.split(".")
          saved = version_string.split(".")
  
          warning_text_upgrade = (
              "The schema version of the saved %s"
              "(%s) is greater than the latest supported (%s). "
              "You may need to upgrade featuretools. Attempting to load %s ..."
              % (cls_type, version_string, SCHEMA_VERSION, cls_type)
          )
          for c_num, s_num in zip_longest(current, saved, fillvalue=0):
              if c_num > s_num:
                  break
              elif c_num < s_num:
                  warnings.warn(warning_text_upgrade)
                  break
  
          warning_text_outdated = (
              "The schema version of the saved %s"
              "(%s) is no longer supported by this version "
              "of featuretools. Attempting to load %s ..."
              % (cls_type, version_string, cls_type)
          )
          # Check if saved has older major version.
          if current[0] > saved[0]:
              logger.warning(warning_text_outdated)
  ```
  
  If we use packaging as described here (https://stackoverflow.com/a/11887885) we could simplify the comparisons to something similar to `version.parse(saved) < version.parse(current)` and avoid splitting the version into components and looping over the version lists.