Warn if try to summarize variable greater than 1d

Trying to summarize a variable with greater than one dimension results
in an error (trace.py 121):

  TypeError: type numpy.ndarray doesn't define __round__ method

With these changes, variables above 1 dimension are skipped and a
warning is given.
Move summary function to bottom of trace.py

To avoid splitting up NpTrace and MultiTrace
Rewrite trace.summary

Main changes
- Do not use `+=` to build lists for output
- Use str.format to control spacing/padding
- Use str.format to control rounding
- Don't overwrite builtin `buffer` (python 2)
- Combine common code for stats and posterior quantile output
- Split summary into separate functions/classes to make it easier to test