Update on cache strategy

Use the cache even if in queue.

Also added a cachehit callback that can invalidate the cache by returning false.
Any other return value will allow the cache to be sent to the success callback.
Make it possible to pass a single string 1st arg

Before that it was impossible to pass a string since it does have a valid numeric .length property.

This change also makes it possible to pass a single null value.
null *is* defined.
Added a test for cache retreival
really allow nulls (fix broken test)