Added square bracket support.

Instead of using getItem and setItem, use square brackets to get and set array
elements.
Removed base classes and inlined definitions.

Removed the abstract base classes because now the library to be used is
determined at compile time.
Determine data structure library at compile time.
Made use of the [] feature of lib_wrapper Array.

Converted all the getField and setField calls to Array use [] notation.
Disabling CDSArray copy constructor and = operator.

To ensure that the default copy constructor is not used. Also shouldn't be
deep copying the array pointer due to high memory use.
Made local array variables not use pointers.

Local array variables don't need to be pointers since copy constructors won't
be called on them.
Removing unusued functions and use of this.
Implemented wrappers for BitString, SDArray, RRR.

Implemented wrappers for BitString, BitSequenceSDArray and BitSequenceRRR. Had
to implement all three in one go because SDArray and RRR bit sequences are
initialised with a BitString in RLZ.
Use wrapper versions bit strings and sequences.

Converted all uses of BitString, BitSequenceSDArray and BitSequenceRRR in RLZ
compression and decompression code to use the wrapper versions.
Added the missing access function.

Added access() function for BitSequence classes.
Use wrapper versions of SDArray and RRR sequences.

Converted the RLZ index code to use the CDS wrapper versions of
BitSequenceSDArray and BitSequenceRRR.
Also removed unnecessary library includes.
Moved includes around and removed unnecessary ones.
Converted access() to [] operator.
Removed getBitString() and gave friend access.

Gave CDSBitSequenceSDArray and CDSBitSequenceRRR friend access to CDSBitString
so that they can access the private bitstring field directly.