refactored facebook, google, github providers to use internally subclassed passport strategy