Fix #230: Export retry results in too many requests.

The return statement was missing from the terminating condition.

I also added a debounce on the "Trying again X more times..."
message so that it doesn't flash by too quickly before you are able to
read it.
Issue #242: Feature Compare plugin expects "OBJECTID".

The following changes were made to the feature compare plugin:

- New layer option in compare_config.json called 'objectIdField' which
  is the name of the OBJECTID property on layer features.
- If no 'objectIdField' is configured, we look for an 'esriFieldTypeOID'
  field in the layer info and use that.
- If all else fails, we revert to the default behavior which just
  assumes that an OBJECTID property exists on the layer feature.
Merge pull request #246 from kdeloach/topic/fix-export-requests

Fix #230: Export retry results in too many requests.
Merge pull request #247 from kdeloach/topic/objectid

Issue #242: Feature Compare plugin expects "OBJECTID".
Merge pull request #248 from CoastalResilienceNetwork/topic/add-docs

Add most recent plugin development documentation.
Feature compare has default display for nulls

Feature compare results table showing 'gaps' due to null values.  Places
default text to have all cells filled in.
Merge pull request #249 from CoastalResilienceNetwork/fix/null-comparer

Feature compare has default display for nulls
Feature Compare attr order defined by config

Rather than allowing the order from the mxd to determine the display
order
user the ordering of the fields specs in the compare config
Set plugin window below app modals

Both save 'n share and export had a lower z-index, resulting in the
plugin window being above the modal overlay.  Plugin window is sitll
above all the other map UI elements.
Merge pull request #250 from mmcfarland/fix/fc-field-order

Feature Compare field order
Clean identify primary field name
Issue #253: Root level service info buttons don't work until service is expanded.

The service info button click handler was only added after a checkbox
click or item expand event. This change adds the click event handler
immediately after rendering the layer selector tree.
Issue #255: Checking a layer group with a layerId greater than 0 results in all child layers being selected.

The logic which gathers the list of visibile layerIds when a layer group
is checked was faulty. Not only would it include all checked child
nodes, but it would also include the layer group parent node.

Due to 0 being falsy in JS this issue did not affect the first layer
group in a collection which lead to inconsistent behavior.

This is fixed by only adding a layer to the list of visible layerIds if
it is a leaf node.
Merge pull request #254 from kdeloach/topic/fix-service-info-button

Issue #253: Root level service info buttons don't work until service is ...
Merge pull request #256 from kdeloach/topic/fix-layer-group-selection

Issue #255: Checking a layer group with a layerId greater than 0 results...
Allow Spaces in URLs via proxy

When the proxy decodes the destination URL, it replaces spaces with "+"
characters which then invalidate the URL path on an AGS.  Fix this by
then replacing + with "%20" for valid encode spaces in the URL.

Fixes #257
Merge pull request #252 from mmcfarland/topic/clean-fieldname

Clean identify primary field name
Merge pull request #258 from mmcfarland/topic/ie11-print-fail

Allow Spaces in URLs via proxy
Allow custom legends

Custom legends were appearing off of the legend container due to
a previous refactor/update.  This restores the custom legends to the
container.
Merge pull request #259 from CoastalResilienceNetwork/topic/custom-legends

Allow custom legends