Corrected some Errors and added parsing for "!read last" function

This was actually a big change. This added in (hopefully) better argument handling, allowing for a "!read last" function to be enabled. Also added commenting to some of the changes to better notate what is being done at each step. This *should* handle "clever" users trying to break it with out of range indices and "0" or negative indices. Existing error catching should resolve any additional invalid arguments.