text: Title: Add the ability to specify custom feature column names and save/recreate them during serialization
  Body: - As a user, I wish I could use Featuretools to specify custom column names for the feature columns that are generated when a feature matrix is calculated. Column names are automatically generated based on a variety of factors including the primitive name, the base features and any parameters passed to the primitive, but it would be beneficial in some circumstances to allow users to easily override these names with a `Feature.set_feature_names` method to directly set the `Feature._names` attribute, rather than having the names generated.
  
  This setter should include a simple check to confirm that the number of feature names provided matches the number of output columns for the feature. Optionally, the names could be serialized only in situations where the user has set custom names.
  
  #### Code Example
  
  ```python
  custom_feature_names = ["feat_col1", "feat_col2"]
  my_feature.set_feature_names(custom_feature_names)
  assert my_feature.get_feature_names == custom_feature_names
  
  ft.save_features([my_feature], "features.json")
  deserialized_features = ft.load_features("features.json")
  assert deserialized_features[0].get_feature_names == custom_feature_names
  ```
  