invalid Controller#controllers accesses throw runtime exceptions

if controllers property was accessed, but the
controller being requested was not specified in
needs, we throw.
Controller#controllers property should be readOnly
Merge pull request #3277 from stefanpenner/strict_needs

Strict Controller#needs