Persistent UI settings and string input line editing + saved history

string_input_popup: line editing via arrows, optional persistent history backbuffer, description field
list_items: history for filters persists across saves
uistate: saves persistent data to save/uistate.json
advanced_inv: remembers sorting and target setting across saves
uimenu: bugfixes and additional helper functions

string_input_popup acts as before, except:
* new arguments- all optional- (str title, int maxwidth, str default, str description, str history_id)
* ^U clears line
* up arrow pulls up history if history_id is provided
* support for larger block of descriptive text above input