compiler: Include branches in the cost for steps

Nesting steps were only including the cost of branching, not the cost of
the steps inside that branch. This means that conditionals were being
very aggressively inlined even if they included large amounts of code

Fix by including the cost of each branch inside the cost for the nesting
step
compiler: Remove CaseLambdaSignature

Instead of giving all (case-lambda)s the same signature allow them to
have an individual tailored signature. This commit only gives them
the FastCC attribute and skips their self argument if none of the clause
lambdas capture.

This is a requirement for the the tail recursion work outlined in #46
compiler: Have PlanCaseLambda phi result values

Instead of casting all result values to ArbitraryValues (which can be
expensive) use PlanResultValuesPhi to phi the results together. This
allows the (case-lambda) to chose a natural return type and avoid
allocating a multiple values list.
stdlib: Implement (vector->list)

This implements (vector->list) including the slicing variants. This will
hopefully be a good model for how other slicing stdlib functions can be
implemented efficiently.