Requests for comment/Page protection as a component/Componentization

Refactor Core Protection
Extract into clases, "include/protection/": ProtectedTitle.php, PageRestriction.php...

New hooks

 * CheckAction( context, action, &options, &errors )
 * TimStarling> we already have the getUserPermissionsErrors hook, which has parameters: Title, User, action, result
 * PurgeRestrictions( context )
 * APIGetPossibleErrors
 * APIQueryInfo::GetPublicProps
 * FilterQuery
 * EditPage::show

ETCETC