modify alist/plist behaviour without breaking core

aha - so I *think* I've managed to add my functionality without changing what was already there and working well. The way this is working now on my fork should be exactly as before, but when you call (yason:encode-plist it shadows the dynamic var which chooses between  'keyword-string convention' and 'plist convention'.  this dynamic var is not exported from the package so essentially the functionality from user point of view is identical, but with the exception that you can do something like:

(yason:encode-plist '((:a "a" :|b-and-c| (:b "b" :c "c")) (1 2 3)))
=>
[{"A":"a","b-and-c":{"B":"b","C":"c"}},[1,2,3]]

I've updated the docs and added new tests to demonstrate the ability to perform round trips
Please name it encode-plist% (also encode-alist%).