Use non-smush names

The use of names such as lastname rather than last_name was the result
of issues in the main OTM codebase related to the API. Those have been
fixed in v3 of the API.
Handle creation of UDF collection groupings.

The API will now return sets of UDF collections fields that need to be
grouped together and sorted. For instance tree and plot stewardships
will have similar data and should be shown together on the tree detail.
EX:
plot - watering - 2014.07.10
tree - watering - 2014.07.09
plot - mulching - 2014.07.08
As a result we need to track the sort key for the fields (date in the
example above) and the add both fields to the model as a new cell type
that can handle this behavior.
Create 'holder' class to handle rendered cells.

We need to abstract our cell handling up a level. We had been using a
cell renderer which could return a rendered cell. This assumed a 1:1
relationship between the renderer and a cell (i.e. each renderer could
generate a single cell with data). The addition of stewardship and
alerts means this is no longer true. A single field can now result in
the creation of many cells in the tree deail table. A stewarship field
might have 10 stewarship actions. Additionally these can be intermingled
with a totally different field type (tree stewardships and plot
stewardships). So we need a way to render a group of cells from the
data and move them around in such a way that they still have useful data
on them that can be used for sorting and grouping. Here we make a
CellSorter which is a container that holds individual cells along with a
sort key that can be used to group cells of common type and sort data
that can be used to perform the actual sorting.
Group & sort common fields on tree detail table.

In order to show grouped stewardship and alerts properly we need to find
grouped fields and sort them together by the sort data as defined in the
sort key of our new cell sorter holder. In this case, all the cells need
to be prerendered and sorted before we can actually display them on the
table. This allows us to stash away overflow cells on the Load More
button and re-add them to the table each time the button is clicked.
When the load more button has no more hidden cells on it, it will
dissapear.
Formatting and whitespace cleanup.
Storyboard changes.

It's hard to tell what these actually do and I don't recall changing
anything on the storyboard in a meaningful way. The changes don't seem
to be causing any issues but I thought it would be better to keep the
separate in case we have any need to revert them.
Fix crash when adding new tree.

At this point, we do not support adding alerts and stewardships from the
mobile app. In order to prevent the app from crashing when adding new
trees we need to make sure that we don't try to add stewardship and
alert cells to the page for non-existant data.
Change label for UDF types.

Plot should be shown to users as "Planting Site" but is returned in many
cases from the API as "Plot". This allows us to support changing these
titles easily by adding a dictionary of types -> labels.
Merge pull request #190 from lliss/topic/display-alerts-on-tree-details

Topic/display alerts on tree details
Show rows when load more cell is not available.

We didn't have a case to show the stewardship and alert cells when the
more button was inactive (when there were fewer than four stewardships
or alerts in there respective sections. This change adds them.
Merge pull request #191 from lliss/topic/fix-load-more-cell-behavior

Show rows when load more cell is not available.
Add filter class for 'Default' type data.

We have creted a new type of field called a 'default' field. These are
fields that have a default value but are otherwise just a choice list.
This was developed to handle alerts which default to an unresolved
state. Since these are UDFs we need to pass in the id of the udf to the
tiler along with the data. Thus we look up the default value when
creating a new default filter and pass it in when creating the object.

Default type filters are also OR type filters for the tiler. This way a
user can search for plots and trees that have open alerts and get both
in the retured data set not just trees that have alerts and alerts for
their planting sites. In order to do this we had to restructure the data
passed in to the tiler query and create a sub-array that holds the OR
type filters.
Merge pull request #192 from lliss/topic/alert-stewardship-filters

Add filter class for 'Default' type data.
Add new stewadships & alerts from tree edit page.

When on the tree edit page we want add a button that allows users to add
a new stewardship or alert UDF. Users can add as many of these as they
would like. The information for the steps in the UDF is set at the time
the data for the instance comes from the API. We create an add more
button for each UDF field and then group those buttons together,
squashing them and combining their field keys for the first step. This
allow one button to handle several similar kinds of UDFs that are part
of the same collection.
Show rows when load more cell is not available.

We didn't have a case to show the stewardship and alert cells when the
more button was inactive (when there were fewer than four stewardships
or alerts in there respective sections. This change adds them.
Showing UFD collections when in edit mode.

In edit mode, we show the UDF collection data. This requires creating an
edit cell and adding it to the detail render.
Fix dates - YYYY to yyyy

The YYYY format for dates in iOS is actual a week sensitive year thus
setting a date of 2014-12-31 actually results in a date of 2015-12-31
when the application parses the dates.
Require set data to move to next step of UDF.

Users should not be allowed to click the next or done button until they
have made a selection on the current step. This enforces this behavior
by disabling the next or done button until a selection has been made.
Allow saving UDF data on new trees.

The initial data structure of new trees prevented UDF collection data
from being properly set on them. Here we capture the incoming collection
data and use it to set the proper dictionary keys so that we can add a
UDF collection to a new tree at the time we are adding it.
Surpress issue in which cells respond twice to click.

The stack of view controllers has a strange behavior and events seem to
fire multiple times in some cases. To prevent this, we null out data
when we are finished providing the notification.