Complete datastore subsref() and subsasgn()

These two functions now operate properly for the "()" and "." cases.
"{}" is still not functional, but likely won't be used.

"()" now takes string arguments, not integer indices.
This is contrary to convention.
The interpreter assumes that "{}" indicates a comma seperated list context,
outside the control of the subs* functions.
This necessitated the switch.

"()" contexts accept one paramater, or an even number of paramters.
It currently does not have functionality for odd number of paramters
greater than 1, and will throw an error.