Added constructor to also keep hold of mapping and data associated

Required for PhoneReader when you want to have a field with a list of
approved options e.g. Language: English, Hindi, Other etc
Swapped to HashMaps for fields instead of lots of hard strings

Added: setCustomField(key, value)
Added: getCustomField(key)
Added: getPhoneNumber
Added: setString(key, value) replaces statics like name, number etc
Added HashMaps for db lookups was getting bored of typing results.get(X)

Added: close(Statement, ResultSet), was also getting bored of closing
statements and results with the try catch block and null setting

Added: populateCustomIDs (not finished), gets custom fields with the 
index of the field associated e.g. Language => English = 0

Added: MAX_RECORDS limit to phone messages SQL
Added method to get index of data (its id for use with PhoneReader)
Converted to HashMap<String, FieldMap> for Custom IDs

Amended processPhoneMessage to throw back the record ID so we can update
the last processed record later.
Make sure we update the id processed by tagging it in the finally block