title: Pandas str.replace method regex flag raises inconsistent exceptions
body: <p>When I use the <code>regex=[True|False]</code> flag in the <code>pd.Series.str.replace()</code> method, I get contradictory exceptions:</p>
  
  <ul>
  <li><code>repl</code> is a dictionary => it says <code>repl must be a string or callable</code></li>
  <li><code>repl</code> is a callable => it says <code>Cannot use a callable replacement when regex=False</code></li>
  </ul>
  
  <p>I'm trying to replace the month part of a Spanish date from a DataFrame index with the corresponding English short name.</p>
  
  <pre class="lang-py prettyprint-override"><code>import pandas as pd
  import numpy as np
  
  # Define the months' short names in English and Spanish
  ENG = ['JAN', 'FEB', 'MAR', 'APR', 'MAY', 'JUN', 'JUL', 'AUG', 'SEP', 'OCT', 'NOV', 'DEC']
  ESP = ['ENE', 'FEB', 'MAR', 'ABR', 'MAY', 'JUN', 'JUL', 'AGO', 'SEP', 'OCT', 'NOV', 'DIC']
  
  # Dictionary mapping Spanish months to English months
  esp2eng = dict(zip(ESP, ENG))
  
  # Function to make the dictionary "callable"
  def eng_from_esp(key):
      return esp2eng[key]
  
  # Create the DF with date in the "%d-%b-%y" format as index, where %b is the Spanish naming
  idx = ['06-{}-19'.format(m) for m in ESP]
  col = ['ordinal']
  data = pd.DataFrame(np.arange(12).reshape((12, 1)),
                     index=idx,
                     columns=col)
  
  data.index.str.replace('ENE', esp2eng, regex=False)
  TypeError: repl must be a string or callable
  
  data.index.str.replace('ENE', eng_from_esp, regex=False)
  ValueError: Cannot use a callable replacement when regex=False
  </code></pre>