index get_loc getting called on construction / major slowdown
Using pandas 0.9

get_loc in tseries/index.py is getting called a lot more than necessary, and its fairly slow given the attempts at converting strings to dates in the exception handler.  if you breakpoint get_loc and try things like truncate with a datetime range, calling as_matrix, or even just pulling slices, you'll notice it getting called with a key value for all types of magic methods and object variables at frame construction and slicing time.  

As an example, when constructing a dataframe, the superclass calls:
self._item_cache = {}

That in turns calls __setattr_ which is overriden and it ends up calling get_loc off the index with a key of _item_cache (only to get back a KeyError).  

Based off some cprofile results on the same set of code, my reindex calls using the repository codebase (for 0.9) results in 238534 calls to reindex that take 155.451 seconds.  If I modify get_loc with the statement below, it drops to 50.54 seconds.  This is closer to older versions of pandas that I had used.  Similar improvements are found in many major operations (transpose, as_matrix, etc).

Hack code I added to test speedup - add this at beginning of get_loc:

```
    if isinstance(key, str) and key[0] == '_':
        raise KeyError(key)
```

There's probably a better way to solve this directly in the **setattr** though.
