ENH: Get function accessible from const objects

This resolves the first phase of a transition described in ITK-3001,
Phase 2 is recorded in ITK-3002
Phase 3 is recorded in ITK-3003

This patch provides a less ambiguous, and more const-conforming
interface to promote the abiltiy to return itkObject::Pointer
ivars from a class to the environment in an explictly modifiable
form, or in a const form.

itkGetObjectMacro <-This will eventually be deprecated, it provides a
                    non-const API to to an ivar object pointer
                    object * Get##name()
                    and it masks the const-conforming itkGetConstObjectMacro

itkGetConstObjectMacro <-This provides the const version of itkGetObjectMacro
                         object const * Get##name() const

itkGetModifiableObjectMacro <- This provides the new API for
                               getting the non-const pointer to the object
                               as object * GetModifiable##name() that
                               has the advantage that it DOES NOT
                               hide the itkGetConstObjectMacro and that
                               it more explicitly conveys that the
                               returned object may be modifiable so you
                               must use caution.

In addition, these changes also enforce that the itkGetConstObjectMacro is
always and consistently defined for all instances where a non-const version
is available.  Previously there were some ivars that were only available
from a non-const object type, thus promoting the use on the non-const
objects unnecessarily.

In Phase I
==========
itkGetModifiableObjectMacro implies that all 3 interfaces are available
        object * GetModifiable##name()
        object * Get##name()
        object const * Get##name() const

In Phase II
===========
itkGetModifiableObjectMacro implies that all 3 interfaces are available
        object * GetModifiable##name()
        object * Get##name()             <- This will issue compiler warnings
        object const * Get##name() const

In Phase III
============
--when ITK_LEGACY_REMOVE=OFF
   Same as Phase II

--when ITK_LEGACY_REMOVE=ON
itkGetModifiableObjectMacro implies that all 3 interfaces are available
        object * GetModifiable##name()
        object const * Get##name() const

        object * Get##name()             <- This will issue compiler error about missing function

The Get methods for functions need to have version
that is accessible from const versions of the object.

In most cases access to the internal member variables
for read-only purposes is accomplished through a const
Get member function.

The most common paradigm used to preserve the principle
of encapsulation for class member functions is to provide
a Set function, and a const Get function.  In ITK we routinely
provide a Get function, but the one that spelled similar to the
itkSetObjectMacro is the itkGetObjectMacro which is
not what is normally desired.  Normally one should use the
itkGetConstObjectMacro to preserve encapsulation, and only use
itkGetObjectMacro in cases where it is necessary to allow
changes the class outside that classes member functions (i.e. for
performance reasons.

Allow explicit request for modifiable Get*

When using a Get* member function to get access to
and internal member variable, the standard itkGetObjectMacro
returned a pointer that was modifiable.  This allow breaking
the rule of encapsulation where member variables state should
only be set through class member functions.  By doing this,
it is easy to change the internal state of a ProcessObject
without changing that ProcessObjects Modified status.

A const version of the itkGetConstObjectMacro is complemented
by a itkGetModifiableObjectMacro with a different name to
explicitly convey that the returned object could be modified
without following standard ITK symantic of updating the
ProcessObject Modified status.

The itkGetModifiableObjectMacro provides the same behavior as
the historical itkGetObjectMacro (i.e. it returns a non-const
pointer to the internal member variable).  The problem with
using itkGetObjectMacro and itkGetConstObjectMacro is that
the non-const version almost always took precidence, even
when the const version would suffice to accomplish the needed
task.

This patch set has completely removed the historical itkGetObjectMacro
to determine the portability of the current code that only has
itkGetConstObjectMacro and itkGetModifiableObjectMacro.  The
ubiquitous nature of the itkGetObjectMacro in 3rd party applications
means that we MUST preserve this function for backwards compatibility
for a long forseeable future.  I would propose that an advanced option
be made available to allow disabling this function for those developers
who want to fortify their code with maximal use of const functions
could disable the itkGetObjectMacro and force use of either
itkGetConstObjectMacro or itkGetModifiableObjectMacro.

Change-Id: I8fbdf8cc999c78292ed167b83c253a6b3aded763
Merge topic 'AddGetConstObjectMacro'

08df6af ENH: Get function accessible from const objects