make getf* generic to support objects and hash-tables

I turned `getf*` into a generic function to enable support for clos objects and hash-tables as environments.
By default, `gethash` is used for hash-tables and `slot-value` for objects, where the slot name is derived from `key` and the package of the objects class name.
I also exported `getf*` in the `cl-emb` package, to allow custom methods to be defined for it.
If you can't use this pull request because the repo is synced from the main repo, I can also send you a patch file.