Add exhaustive tests for 5xN.

The exhaustive tests now cover the following dimensions:
  0x0, 0x1, 0x2 (and by extension 0xN)
  1x0, 1x1, 1x2 (and by extension 1xN)
  2x0, 2x1, 2x2 (and by extension 2xN)
  3x0, 3x1, 3x2 (and by extension 3xN)
  4x0, 4x1, 4x2 (and by extension 4xN)
  5x0, 5x1, 5x2 (and by extension 5xN)

I believe this completes the exhaustive test suite for 2-D shapes.
Move the division by two later in the construction.

Types otoposidesobottom, osidesobottom and osidesobottomo
now use their "int s" template parameter to represent the
total number of vertical pipes in the construction, rather
than the number of vertical pipes divided by two. Something
like this will be necessary when adding cuboid constructions,
because we can have constructions like

    *--*
    !o--*
    *!  !
     *--o

which parses as otoposidesobottom(*--*!o--) * (*!!*--o)
with an "s" parameter of 1.

This doesn't change the observable behavior of the header.
Begin work on 3-D literals (cuboids).

This commit enables cuboids of dimensions WxHxD as long as
(H == D+1) && (D >= 1). Such constructions contain the substring
"*---**!!L", in which the top right corner of the front face is
immediately followed by the bottom left corner of the back face.
This is one family of cuboids that wasn't allowed by Eelis's
original constructions; but notice that I don't yet allow the
large family of cuboids that *was* allowed by Eelis.

This hasn't been exhaustively tested, either, so there are
certainly some combinations of o*-~|! that should be accepted
but aren't, even for cuboids of the proper dimensions.
Update the README with goals of this project