major changes to iteration

re-work the way iteration works for complex field values:

 * app reference
 * contact
 * embed
 * location
 * etc.

Now, you can iterate directly on the field

foreach ($item->fields['field_name'] as $thing) {
}

Fix logic of setting up empty fields, we can only do that
if we have a structure to begin with.  This fixes some
unfortunate recursion loops as well.

API break: re-generate your structure classes.  Structure
classes no longer use constants, but instead use
variables.  In addition, the application name is used instead
of workspace id so that we can present better error
messages on mistakes.