retryq: never fail missing node items during config refresh

If a configuration is being fetched currently then there is a good
chance that the item will end up with a node to service it. This allows
a sane behavior of not keeping the command 'aimlessly' in the queue if
there is no configuration to be retrieved, while on the other hand
allowing the item to wait until the configuration is finally fetched.

To accomodate this change, a new bootstrap internal API was added that
allows to request a new config purely based on the last-refresh interval
rather than also taking the 'error count' into consideration. We'd like
to refactor the internal bootstrap APIs as well but now is not the time
:)

In light of these changes, this fix also modifies the default behavior
to "Fail Fast" on items missing nodes, since the item will wait
appropriately for a new config if one is indeed being requested.

Change-Id: I0cdae86aae45178203917a1a9ec5561b142e239e
Refactor all bootstrap entry points into a single function

These small functions are now defined as macros specified the relevant
flags to modify when the configuration is refreshed. Moving all the
logic into a single (not so big) function makes it much easier to follow
and understand.

Change-Id: I80102f12d1e23dd13684c44166180259c24d6c7b
Specify ctor options (i.e. k=v&k=v) as volatile

Change-Id: I49b9f542ec4634b09f5bf644c8de3b0f450c7ba3
CCBC-482: Don't throttle based on file-based initial config

This quickens recovery time based on a stale config.

This commit also changes the behavior so that the last_refresh timestamp
is always updated when a valid new config is received (which is not
file-based)

Change-Id: I1fa3376ec002d2d05ea559a68262b01199629a68
CCBC-483: don't use nmv payload if CCCP is disabled

If certain bugs are discovered with the CCCP payload then we can rely on
a pure HTTP config.

Change-Id: Ie113bc79ccd9ee7aff2c583104b95f04c04375cc