User orientation lock
* Added user locked orientation.
Once it's locked, the orientation will be used as a preferred orientation.
- If the active appilcation's orientation is any, the user locked orientation will be used.
- If the active appilcation's orientation is specified, the user locked orientation will be ignored
and uses the application's orientation.
* Exclude windows that does not have AppType because they do not control orientation into account.
For example, task manager, app list shouldn't affect orientation.
* added ScreenOrientationControllerTestApi
- landscape / portrait app should lock to secondary/primary.
- remember and restore the locked state.
- handle rotation change from chrome.system.display api.
- Add portrait/landscape lock icon and make UI consistent with Android rotation lock UI.
TEST=manual, unitt tests