text: Title: Add exception/warning when all features are dropped during feature selection
  Body: There can be a situation when all features are dropped during feature selection. Need to handle it. Maybe by throwing exception or raising a warning.
  
  Code to reproduce:
  ```py
  import numpy as np
  from supervised import AutoML
  
  X = np.random.uniform(size=(1000, 31))
  y = np.random.randint(0, 2, size=(1000,))
  
  automl = AutoML(
      algorithms=["CatBoost", "Xgboost", "LightGBM"],
      model_time_limit=30*60,
      start_random_models=10,
      hill_climbing_steps=3,
      top_models_to_improve=3,
      golden_features=True,
      feature_selection=True,
      stack_models=True,
      train_ensemble=True,
      explain_level=0,
      validation_strategy={
          "validation_type": "kfold",
          "k_folds": 4,
          "shuffle": False,
          "stratify": True,
      }
  )
  automl.fit(X, y)
  
  ```
  
  Error:
  ```
  Drop features ['feature_13', 'feature_27', 'feature_19', 'feature_25', 'feature_2', 'feature_15', 'feature_6', 'feature_26', 'random_feature', 'feature_17', 'feature_3', 'feature_4', 'feature_10', 'feature_12', 'feature_16', 'feature_1', 'feature_30', 'feature_29', 'feature_21', 'feature_22', 'feature_23', 'feature_24', 'feature_8', 'feature_31', 'feature_5', 'feature_28', 'feature_11', 'feature_9', 'feature_18', 'feature_14', 'feature_7', 'feature_20']
  * Step features_selection will try to check up to 3 models
  Traceback (most recent call last):
    File "examples/scripts/bug.py", line 25, in <module>
      automl.fit(X, y)
    File "/home/piotr/sandbox/mljar-supervised/supervised/automl.py", line 289, in fit
      return self._fit(X, y)
    File "/home/piotr/sandbox/mljar-supervised/supervised/base_automl.py", line 670, in _fit
      raise e
    File "/home/piotr/sandbox/mljar-supervised/supervised/base_automl.py", line 657, in _fit
      trained = self.train_model(params)
    File "/home/piotr/sandbox/mljar-supervised/supervised/base_automl.py", line 229, in train_model
      mf.train(model_path)
    File "/home/piotr/sandbox/mljar-supervised/supervised/model_framework.py", line 147, in train
      learner.fit(X_train, y_train, X_validation, y_validation, log_to_file)
    File "/home/piotr/sandbox/mljar-supervised/supervised/algorithms/catboost.py", line 89, in fit
      verbose_eval=False,
    File "/home/piotr/sandbox/mljar-supervised/venv_mljs/lib/python3.6/site-packages/catboost/core.py", line 4292, in fit
      silent, early_stopping_rounds, save_snapshot, snapshot_file, snapshot_interval, init_model)
    File "/home/piotr/sandbox/mljar-supervised/venv_mljs/lib/python3.6/site-packages/catboost/core.py", line 1793, in _fit
      save_snapshot, snapshot_file, snapshot_interval, init_model
    File "/home/piotr/sandbox/mljar-supervised/venv_mljs/lib/python3.6/site-packages/catboost/core.py", line 1680, in _prepare_train_params
      baseline, column_description)
    File "/home/piotr/sandbox/mljar-supervised/venv_mljs/lib/python3.6/site-packages/catboost/core.py", line 985, in _build_train_pool
      group_weight=group_weight, subgroup_id=subgroup_id, pairs_weight=pairs_weight, baseline=baseline)
    File "/home/piotr/sandbox/mljar-supervised/venv_mljs/lib/python3.6/site-packages/catboost/core.py", line 392, in __init__
      self._check_data_empty(data)
    File "/home/piotr/sandbox/mljar-supervised/venv_mljs/lib/python3.6/site-packages/catboost/core.py", line 546, in _check_data_empty
      raise CatBoostError("Input data must have at least one feature")
  _catboost.CatBoostError: Input data must have at least one feature
  
  ```