ENH Pipeline can now be sliced or indexed

This PR offers an alternative to #2561 and #2562, making it easy to apply inverse transforms (or transforms) over only a sub-sequence of steps in a pipeline. Thus:
```
pca = PCA()
clf = LinearSVC()
pipeline = Pipeline([('pca', pca), ('clf', clf)])

pipeline.fit(X, y)
pipeline[:-1].inverse_transform(pipeline[-1].coef_)
```

@schwarty, is this sufficient for your needs?