fix(ngRepeat): support complex assignable aliasAs expressions

Parse aliasAs as an expression, and assert that the expression is assignable.

BREAKING CHANGE

Previously, any name passed as an expression would make up a single property name, including constant
values such as 1, NaN, null, undefined, or even expressions such as function calls or boolean expressions.

Now, more complex expressions are possible, allowing the collection alias to be assigned as a property
of an object --- however, if the expression is not determined to be assignable, it will throw.

Fixes #8438