WIP: Better formatting for .set_precision
closes #11656 

I found some extra time behind the sofa and started working on this. I made quite a few additions but by default everything should work as it did.
- just calling `.set_precision` with an `int` will truncate all columns to that many decimal places as before
- precision can be set per column as an extra `dict` to `.set_precision`
- the precision values can be either `int`s or valid python `str.format` strings
  - I wanted to add this to allow formats like `{:.2e}` and possibly some string/date manipulations
  - the `.set_precision` should perhaps be called `set_format` (or `format_cells`) as a result
- all formatting can be reset by calling `.set_precision()` (no args)

_what's missing?_
- the documentation needs to be updated to reflect these changes (if you're happy with what's here I'll move on to updating the docs)
- should leave the index alone and just format the data columns
- tests?
- support for `pd.IndexSlice` for subsets?

---

```
import itertools
import pandas as pd
import numpy as np

jobs = itertools.product(['a', 'b', 'c', 'd'], np.arange(1e-4, 1e-3, .0003), range(10))
rows = []
for v, v2, itr in jobs:
    rows.append({'param_1': v, 'param_2': v2, 'iter': itr,
                 'score_1': np.random.randint(0, 100, size=(1,))[0],
                 'score_2': np.random.rand(1, )[0]})
df_multi = pd.DataFrame(rows)
agg = df_multi.groupby(by=['param_1', 'param_2'])[['score_1', 'score_2']].agg(['mean', 'sem'])
```

---

printing with just the defaults
![screen shot 2015-11-20 at 18 56 56](https://cloud.githubusercontent.com/assets/1055719/11307455/96b42fc4-8fb8-11e5-8a52-0a1ae860f57e.png)

crazy awesome new formatting (forget that the `kwarg` is called `column_formats` that's been changed to `subsets`)

![screen shot 2015-11-20 at 18 59 09](https://cloud.githubusercontent.com/assets/1055719/11307501/e6e04a0a-8fb8-11e5-873c-7381e14a3099.png)
