New JuMPDict printing style

Per #260, changes printing of JuMPDicts to look more like regular dicts (a lot of the code is adapted right from the code in base). Gives something like:
```julia
julia> @defVar(m, x[i=1:6,i:7]);

julia> getValue(x)
2-dimensional JuMPDict with 27 entries:
 x[3,4] = NaN
 x[1,6] = NaN
 x[3,6] = NaN
 x[2,3] = NaN
 x[2,6] = NaN
 x[2,2] = NaN
 x[4,4] = NaN
 x[5,6] = NaN
 x[4,6] = NaN
 x[2,5] = NaN
 x[1,7] = NaN
 x[4,7] = NaN
 x[1,4] = NaN
 x[3,3] = NaN
 x[1,3] = NaN
 x[4,5] = NaN
 x[2,4] = NaN
 x[1,1] = NaN
 x[6,7] = NaN
 x[1,2] = NaN
 x[3,7] = NaN
 x[6,6] = NaN
 x[5,5] = NaN
 x[2,7] = NaN
 x[1,5] = NaN
⋮   => ⋮
```
We could potentially try mimicking the "slicing" behavior for JuMPArrays, but this will be tricky (and doubly so for full-fledged conditionals), so I'm fine leaving it like this, I think.

Tests will fail until I adapt the printing cases.