"errors" parameter has no effect on pd.DataFrame.astype if a dictionary is passed in as the dtype argument
#### Code Sample, a copy-pastable example if possible

Given the code sample below:

```python 
data_df = pd.DataFrame([{'col_a': '1', 'col_b': '16.5%', 'col_c': 'test'},
                        {'col_a': '2.2', 'col_b': '15.3', 'col_c': 'another_test'}
                       ]) 
type_dict = {'col_a': 'float64', 'col_b': 'float64', 'col_c': 'object}
data_df = data_df.astype(dtype=type_dict, errors='ignore')
```

#### Problem description

Pandas will raise the error `ValueError: could not convert string to float: '16.5%'` despite the fact that the `errors='ignore'` parameter was passed in. This is probable due to the implementation of `astype`, as can be seen in `pandas.core.generic.py` lines 5658 - 5680

```python
        if is_dict_like(dtype):
            if self.ndim == 1:  # i.e. Series
                if len(dtype) > 1 or self.name not in dtype:
                    raise KeyError('Only the Series name can be used for '
                                   'the key in Series dtype mappings.')
                new_type = dtype[self.name]
                return self.astype(new_type, copy, errors, **kwargs)
            elif self.ndim > 2:
                raise NotImplementedError(
                    'astype() only accepts a dtype arg of type dict when '
                    'invoked on Series and DataFrames. A single dtype must be '
                    'specified when invoked on a Panel.'
                )
            for col_name in dtype.keys():
                if col_name not in self:
                    raise KeyError('Only a column name can be used for the '
                                   'key in a dtype mappings argument.')
            results = []
            for col_name, col in self.iteritems():
                if col_name in dtype:
                    results.append(col.astype(dtype[col_name], copy=copy))
                else:
                    results.append(results.append(col.copy() if copy else col))
```

#### Expected Output

One would expect the `pd.DataFrame` to successfully type cast, leaving the `col_b` as an `np.object` type
