Add function partials

In Haskell, when a function returns a function, all the excess arguments from the first function get forwarded to the second function. This adds that to Hy using the `defp` macro. This also adds `$` as a shorthand alias for `functool.partial`.