util.inspect: support for sparsed arrays

1)  Modify output format for util.inspect in such manner that allow
a compact output for a large sparsed array.
   Was:
   [,,,,,,,,,,,,,,,5,,,,...,,,10,,,...,,,] (... mean thousands commas)
   Now
   [15:5, 2000:10, 9999: ]

2) Streamline the code in `formatValue`

3) Improve presentation for deep nested objects.
    Was: `[Object]` in most cases.
    Now: `[Array(len)]`for arrays
         `[object class]` in other cases.