Rename variable for clarity and move comment in DataGroupTests.

The test had Datagroups data, data2, data3, data5.  This renames data5
to data4 so the reader isn't looking for the missing value in the
series.

Also, moves the comment about why data=data4 is ok to the line that
does the assignment.
Re-adds documentation on immutability of DataGroup's data layout.

The const-ness of the entries is actually a function of NamedData, not
of DataGroup, but the user of DataGroup should be made aware of that
immutability.
Reverts NamedData::isValid name-change in commit 1a773da.

Keeps the documentation changes from that commit.
Removes CommonDevice::setInput and its single argument constructor.

CommonDevice should be passed an initial DataGroup on construction, to
setup the DataGroup that will be passed to/from the device.  By allowing
CommonDevice to be constructed without the initial DataGroup, extra
functionality was required to check whether or not that data had been
set.  The only class that used the single-argument CommonDevice
constructor was PoseIntegrator, which did so just for convenience.

Instead, PoseIntegrator now gets the DataGroup in its constructor,
which is called from MultiAxisDevice.  MultiAxisDevice gets the data
from its member RawMultiAxisDevice (which is a CommonDevice).  To do so,
MultiAxisDevice's constructor is now a friend function of
RawMultiAxisDevice.  Also, CommonDevice::getInitialData has a non-const
version.

As a bonus, this reduces the number of places in the code that we
check the validity of a DataGroup, a function which is being refactored.
Removes DataGroup::isInitialized/isValid because it is not needed.

DataGroup::isInitialized (recently renamed from isValid), was being used
in DataGroup::operator= to check if all of the member NamedData were
valid before assigning from them.  That test was not necessary because
NamedData::operator= performs the same validity check.

After removing direct calls to DataGroup::isInitialized, all of the
DataGroup's UnitTests worked without further changes, demonstrating how
the assertions are still being performed (just in NamedData).

The other places isInitialized was used were:
1) in InputComponent to test the input data (unnecessary because the
LockedContainer::set will call DataGroup::operator=), and
2) in CommonDevice's addInputConsumer and pushInput to check the
initial data and input data, respectively.

When a DataGroup is being passed between a CommonDevice and an
InputConsumerInterface, the same DataGroup object should be used for
initialization and each time pushInput is called, which should ensure
that the DataGroup's NamedData are always valid.  Also, if the
InputConsumerInterface to which the input is being pushed assigns the
DataGroup to a member variable in handleInput (like InputConsumer
setting the DataGroup into a LockedContainer), the assignment will cause
an assertion anyway (if any of the DataGroup's NamedData are not valid).