Allow assert to be optimized

If you run hoek with --trace_opt you can see that the exports.assert isn't optimized because it calls slice on arguments:

```
disabled optimization for 0x1c4fd5e40f49 <SharedFunctionInfo exports.assert>, reason: Bad value context for arguments value]
```

After changing this to manually populate msgs from the arguments the function can be optimized by the optimizing compiler.
I'm not so sure about this change. I have no doubt this is faster and can be optimized, but there is probably a reason no one really does it this way and always uses the `Array.prototype.slice.call` trick.

I don't think the order is guaranteed on the keys of `arguments` or something along those lines if you try to do it this way. 

Check out this implementation. https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments. That looks like the way to go to me personally if we are trying to squeeze optimizations.