Open requested to merge topic/3.1/Search into branch/3.1
--HG-- branch : 3.1
Rebased to 3.1 from 3.2
Outstanding Review comments (that I know of):
-  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.