Use the abstract factory pattern for creating resource controllers

Currently, the resource controller factory only supports "Local".
I'm thinking that an invalid controller should probably throw.  It
currently returns None...

Change-Id: I3483b93257a02db72f7bf975f06230312fd9b08d
Merge "Use the abstract factory pattern for creating resource controllers"