Remove canCallWith, add getBestViableFunction

getBestViableFunction determines the best overload to call given an
array of functions. The behavior of canCallWith has been replaced by
FunctionProto.isViableForCall() and getFunctionCallRank().
Move utility functions to utils.js

This is in preparation for adding module.js.
getBestViableFunction returns idx instead of fn

This makes it easier to use in the module.
Add module.js and new test

This probably will change a bit, but it's good for now.
Remove test_typebuilder.js

This isn't used anymore.
Add test/test_utils.js
Prefer integral or float promotion to conversion
Allow explicit creation of handles

The syntax is module.$handle(value, opt_type)
More module tests