Make cat' and friends accumulate seperation between empty diagrams

closes #37 

@byorgey, is this how you want to handle #37?

The test code:
``` haskell
import Diagrams.Prelude
import Diagrams.Backend.SVG

a = let d = hcat' with { sep = 0.2 } [circle 1, mempty, mempty, mempty, circle 1]
        in
     d <> square 1

b = let d = mempty ||| circle 1 in
    d <> square 1

c = let d = hcat' with { sep = 0.2 } [circle 1, circle 1]
        in
     d <> square 1


main :: IO ()
main = renderSVG "bug37.svg" (Dims 400 400) $ (a === b === c) # pad 1.02
```

produces the following output, as expected:

![bug37](https://f.cloud.github.com/assets/251106/1355024/be0ff74c-375e-11e3-86cb-6f403af62ff5.png)