More consistent options behavior

No longer support simple arrays -- It could lead to inconsistent option formats.
Automatically create option for initial ngModel value if it doesn't exist.
Add searchField & sortField to createItem()