COMP: check for this == &rhs as much as possible.

I noticed that there was not much consistency in
how operator= is implemented in ITK.

1. Some actual operater= return void instead of T &
2. Inconsistent checking for self-assignment.

In general 'always check for self-assignment' is good
advice, since it can be computationally expensive and in
some cases cause faults or inconsistent state.

In practice, there are reasons not to always check:

1. Cost of check in frequently executed assignments. Self-assignment
is almost always a programming error, so it almost always does not
occur.
2. operator= calls superclass operator= with no additional code.
The self-assignment checkshould only occur in the most senior
superclass.
3. Trivial self-assignment of POD.  I surmise the cost of a few
POD assignments will be less than that of a test, and conditional
branches are more expensive than straight-line code.

Based on these conditions I chose not to add self-assignment tests
in many instances.  I also made all self-assignment tests (new and
existing) match the same style, which uses 'single return point'
in preference over 'early return' pattern.

Change-Id: I81c33e6dc523f143c0b51f546f520f98b56fe48b
Merge topic 'OperatorEquals'

62651f2 COMP: check for this == &rhs as much as possible.