Fix for Codeplex #544

The bug here is that when generating an id/name inside a nested context,
the start of the 'nested' part of the name might be an indexer expression.
The code for id/name generation assumes that only a property access will
occur, and combines the strings with a dot.

The most common way to hit this is to create an editor template for a List
or array of objects, and use it like Html.EditorFor(m => m.Items,
"MyTemplate"). This will generate names like 'Items.[0].Price'. The fix
here is to special case index expressions, and omit the dot.

I checked into other possibilities - but it looks like the only
expressions we support for EditorFor (and friends) are property access and
indexers.