Partial function application

This is my attempt at implementing partial application as proposed in #2585.

To summarize:

~~~coffeescript
add = (a,b) -> a + b
add_3 = add 3, ...
7 == add_3 4

class A
  constructor: (@value = 0) ->
  increment_by: (num) -> @value += num
  increment: @increment_by(1, ...)

a = new A
a.increment()
a.value == 1
~~~

~~~javascript
var A, a, add, add_3,
  __slice = [].slice;

add = function(a, b) {
  return a + b;
};

add_3 = function() {
  return add.apply(this, [3].concat(__slice.call(arguments)));
};

7 === add_3(4);

A = (function() {

  function A(value) {
    this.value = value != null ? value : 0;
  }

  A.prototype.increment_by = function(num) {
    return this.value += num;
  };

  A.prototype.increment = function() {
    return this.increment_by.apply(this, [1].concat(__slice.call(arguments)));
  };

  return A;

})();

a = new A;

a.increment();

a.value === 1;
~~~


This is my first attempt at hacking CS source, so I assume that there is probably something wrong with this code, I will try to fix some of the issues I find.


### TODO

- <del>Add suitable documentation.</del>
- <del>Nicer formatting of outputted code.</del>
- <del>Implement soaks (although I'm really not sure of a use-case for these, it needs to be done for the sake of consistency).</del>