DefaultAssembly with leading and trailing discard

Update DefaultAssembly so that all three types work and are consistent
with each other.

Previously, creating an assembly with leading and  trailing discard
was documented as taking the total length that was to be consumed,
i.e. that was to be included in the assembly plus the discards.
However, this didn't work and was called incorrectly by the trailing
discard constructor as it wasn't included the discard in its total
length.

All three constructors now consistently take the length of the actual
assembly. The main constructor has been updated to apply the leading
discard (if any), create the assembly, and then apply the trailing
discard (if any). Unit tests have been added to verify the behaviour
with no discard, only trailing discard, only leading discard, and
leading and trailing discard.
Merge branch 'default-assembly'