search is still coercing to string. Haven't decided the best way to validate before search
 (DONE) still need to rebase the merge to version 3.1 iso 3.2
 (DONE) while the data structure is changed to a dict; I kept the return values as cells or arrays of cells. I did this for two reasons: it allowed me to validate the change to dictionary with minimal refactoring of the unit tests and two, I wanted Charlie's feedback on his view of the return types. Now that I know the internal structure change is working, changing the return type is relatively trivial.
 (DONE) based on review comments, I changed empty return types to 'None'. Some comments suggested throwing a warning or error. Personally, I prefer returning None and letting the user handle it; but am open to feedback.
 (DONE) while I did some updates to the test code based on the changes made, I still need to add some coverage. I opted to keep this for a separate merge.
 I still need to review general comments such as checking stack overflow a rereading the documentation from a 'new user' perspective so that I can make it more clear.