BUG: ProgressAccumulator reports incorrectly for streamed filters

This patch addresses a limitation in the ProgressAccumulator
mini-pipeline functionality that does not enable correct progress
reporting when filters are processed using the
itkStreamingImageFilter. The progress information is incorrect because
each filter in the mini-pipeline is executed multiple times for
different regions, but the overall progress is not captured and
stored. Instead, the ProgressAccumulator only reports the sum of the
current progress of each filter in the mini-pipeline ignoring previous
progress of each filter. For example, the progress of
itkDiscreteGaussianImage does not increase monotonically and does not
reach a final progress of 1. In fact, the final progress value it
reaches depends on the number of streams that are used.

This has now been fixed by including a starting event observer that
adds the progress of the filter to the accumulated progress before
resetting the filter's progress to 0 for the next run. This is
especially helpful when streaming is used since the filter is
restarted multiple times for different regions of the input. By
capturing the start event, it is no longer necessary for filters that
use the ProgressAccumulator to explicitly call
ResetFilterProgressAndKeepAccumulatedProgress() as is done, for
example, in itkLaplacianRecursiveGaussianImageFilter and
itkGradientRecursiveGaussianImageFilter. In fact, that method is no
longer needed and has been marked as deprecated.
Thus, this patch also
simplifies the use of the ProgressAccumulator.
Also, when that method was called, it caused the
filters to re-run even if they have not changed.  This is because a
call to SetProgress(0) is made on every filter inside of the
ResetFilterProgressAndKeepAccumulatedProgress() method.
Thus this patch enables filters not to re-run unless they
have to, which will lead to time savings in some cases.

The method ResetProgress has been deprecated because it served no
purpose.  This functionality has been moved to the constructor where
it belongs.

Because ResetProgress and
ResetFilterProgressAndKeepAccumulatedProgress were deprecated, all
calls to these methods in other ITK filters have been removed after
verifying their correctness.
The tests of those filters have also been updated to include a call to
itkSimpleFilterWatcher to write out the filter progress.

This addresses the problem that was described in
http://www.itk.org/Bug/print_bug_page.php?bug_id=9887 and
https://itk.icts.uiowa.edu/jira/browse/ITK-3047

An example output of running DiscreteGaussianImageFilter on a 2D image
with 4 streams before and after this change are as follows:

Before:
| 0 | 0.0111111 | 0.0222222 | 0.0333333 | 0.0444444 | 0.0555556 |
0.0666667 | 0.0777778 | 0.0888889 | 0.1
| 0.111111 | 0.111111 | 0.111111 | 0.122222 | 0.133333 | 0.144444 |
0.155556 | 0.166667 | 0.177778 | 0.188889
| 0.2 | 0.211111 | 0.222222 | 0.222222 | 0.222222 | 0.111111 |
0.122222 | 0.133333 | 0.144444 | 0.155556
| 0.166667 | 0.177778 | 0.188889 | 0.2 | 0.211111 | 0.222222 |
0.222222 | 0.111111 | 0.122222 | 0.133333
| 0.144444 | 0.155556 | 0.166667 | 0.177778 | 0.188889 | 0.2 |
0.211111 | 0.222222 | 0.222222 | 0.25
| 0.138889 | 0.15 | 0.161111 | 0.172222 | 0.183333 | 0.194444 |
0.205556 | 0.216667 | 0.227778 | 0.238889
| 0.25 | 0.25 | 0.138889 | 0.15 | 0.161111 | 0.172222 | 0.183333 |
0.194444 | 0.205556 | 0.216667
| 0.227778 | 0.238889 | 0.25 | 0.25 | 0.277778 | 0.166667 | 0.177778 |
0.188889 | 0.2 | 0.211111
| 0.222222 | 0.233333 | 0.244444 | 0.255556 | 0.266667 | 0.277778 |
0.277778 | 0.166667 | 0.177778 | 0.188889
| 0.2 | 0.211111 | 0.222222 | 0.233333 | 0.244444 | 0.255556 |
0.266667 | 0.277778 | 0.277778 | 0.305556
| 0.333333

After:
| 0 | 0.0111111 | 0.0222222 | 0.0333333 | 0.0444444 | 0.0555556 |
0.0666667 | 0.0777778 | 0.0888889 | 0.1
| 0.111111 | 0.111111 | 0.111111 | 0.122222 | 0.133333 | 0.144444 |
0.155556 | 0.166667 | 0.177778 | 0.188889
| 0.2 | 0.211111 | 0.222222 | 0.222222 | 0.222222 | 0.222222 |
0.233333 | 0.244444 | 0.255556 | 0.266667
| 0.277778 | 0.288889 | 0.3 | 0.311111 | 0.322222 | 0.333333 |
0.333333 | 0.333333 | 0.344444 | 0.355556
| 0.366667 | 0.377778 | 0.388889 | 0.4 | 0.411111 | 0.422222 |
0.433333 | 0.444444 | 0.444444 | 0.472222
| 0.472222 | 0.483333 | 0.494444 | 0.505556 | 0.516667 | 0.527778 |
0.538889 | 0.55 | 0.561111 | 0.572222
| 0.583333 | 0.583333 | 0.583333 | 0.594445 | 0.605556 | 0.616667 |
0.627778 | 0.638889 | 0.65 | 0.661111
| 0.672222 | 0.683333 | 0.694444 | 0.694444 | 0.722222 | 0.722222 |
0.733333 | 0.744444 | 0.755556 | 0.766667
| 0.777778 | 0.788889 | 0.8 | 0.811111 | 0.822222 | 0.833333 |
0.833333 | 0.833333 | 0.844445 | 0.855556
| 0.866667 | 0.877778 | 0.888889 | 0.9 | 0.911111 | 0.922222 |
0.933333 | 0.944444 | 0.944444 | 0.972222
| 1

Change-Id: Idf71bb6a1ea401f7c91149dce56f847dd5dfc15d
Merge topic 'ProgressAccumulator'

8e2fb60 BUG: ProgressAccumulator reports incorrectly for streamed filters