Move retry functionality into the View

This allows each view to individually record and action upon its retry
state. Previously if one view poll was returning an error (as if a
particular endpoint was down), that would cause all views to slow their
polling on an error. In this new functionality, views independently
record their retry state.

Additionally, retry values are reset to 0 when a "success" happens. This
removes the edge case where retries would "leak" indefinitely for
eventually consistent systems.