forms: Fix ambiguous id / value for typeahead

If a dynamic list is displayed as a typeahead box, the value, when saved,
will be confused with the corresponding ID field for the list. MySQL
supports numeric comparison between the INT id column and the textual value
column. Therefore, if a typeahead field has the value of '01 - GooGoo', then
record will match the ListItem<id=1>, regardless of which list the item is
defined for.

This patch resolves the issue by submitting the ID number of the list
selection in the HTTP form.
Ensure staff lookups are based on valid inputs

If something fishy, like an Array is received into the password reset system
or any part of the Staff management system, it should be rejected.

References:
http://osticket.com/forum/discussion/76003/sql-attack
Log password reset attempts
Double check value entered in typeahead fields

If the text does not match the value on record in the custom list, then the
value entered in the field cannot be accepted.

NOTE: This may have unintended i18n consequences, where there are varying
ways to write a letter in Unicode which may be rendered the same but will
not be correct with a string ==.
Merge pull request #435 from greezybacon/issue/log-pwreset-attempts

Log password reset attempts

Reviewed-By: Peter Rotich <peter@osticket.com>
Merge pull request #422 from greezybacon/issue/numeric-typeahead-values

forms: Fix ambiguous id / value for typeahead

Reviewed-By: Peter Rotich <peter@osticket.com>
Fixup querying drop-down lists via advanced search

It turns out that the _id field was not added to the cdata table when it was
created for SelectionField items, because the ::hasIdValue() method was not
implemented. This patch correctly searches SelectionFields via advanced
search.
Merge pull request #444 from greezybacon/issue/selection-field-ids

Fixup querying drop-down lists via advanced search

Reviewed-By: Peter Rotich <peter@osticket.com>
Fix display of priority field in queue export

Also removes the fetching of priorities separately and addresses sorting of
priorities by the ID field rather than the urgency field.
Merge pull request #451 from greezybacon/issue/priority-export

Fix display of priority field in queue export

Reviewed-By: Peter Rotich <peter@osticket.com>
forms: Fix crash if selection-field not set

If a custom list item were added to an email template, and there is no data
for the field (ie. the field is not required) when the template is rendered,
the system would crash.

toString() is required to return a string, no matter what. This patch
cascades the (string) coercion to the current value of the list field if it
is not an instance of a DynamicListItem
Make Plugin class abstract
Fixup incorrect config load detection
emails: Allow specifying how deep to recurse

Previously, the mail parsing and fetching system would recurse unbounded
searching for bodies by content-type
emails: Mail_Parse detects bounce emails
Ticket thread supports specifying `thread-type`

This allows the email system to detect something like a bounce mail and
specify that the associated message should be an internal note.
emails: Add bounce detection for mail fetching
Remove bit-rotted code
Hide close/hide dialog when esc key is pressed
Merge branch 'develop' into develop-next

Conflicts:
	include/staff/tickets.inc.php