Mustache fixes for static properties on can.Construct-based constructors

I added the following fixes for #450:
- can.Construct functions are never executed in lookups
- Anonymous functions that are not the final lookup are always executed
- Helpers arguments/hash objects are now consistent
  - Functions that are the "final" object are always passed as the original object and never executed
  - The argument/positional parameter way things were handled were the proper way

```
var foostructor = can.Map({ text: "bar" }, {}),
	obj = {
		next_level: {
			thing: foostructor,
			text: "In the inner context"
		}
	};
foostructor.self = foostructor;

{{next_level.thing.self.text}} -> "bar"
```