Issue title: Offer lower-level api for checking and requesting platform-specific permissions
 Issue body: To my understanding, the purpose of this plugin is to make sure that developers that use it no longer have to deal with the native platform's karaharper@example.net.
So I believe it would make sense if all possible the permissions of all [target platforms](https://api.flutter.dev/flutter/foundation/TargetPlatform-class.html) would be included on the Dart side. For example, all the [android permissions](https://developer.android.com/reference/android/Manifest.permission) could be put into an `AndroidPermission` class and the [iOS permissions](https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CocoaKeys.html#//apple_ref/doc/uid/TP40009251-SW1) into an `IOSPermission` class. The `PermissionGroup`s could each contain a list of native permissions to request.

### Platforms affected
- [x] :iphone: iOS
- [x] :robot: Android
 Comments: 
 Comment 0: Thank you for this feedback it is really interesting and indeed might work.

I do think however that we should try to keep  as many permissiongroups as possible cross-platform. This is what makes the plugin popular and easy to use. For those permissions where this is not the case we could indeed make them platform specific which will make it clear to the user what is what.

For example, on Android you don’t specifically ask permission for coarse or fine location, you ask for permission to use the location services and depending on what is listed in your AndroidManifest.xml file. Also Since Android 10 we need to deal with specific permissions for the Background Location Access, which makes the location permissions very close to Apple’s implementation (when in use vs. always). So it makes sense here to combine them into an individual permission API from the Dart point of view. I agree however that making the presets you suggested will make this possible and should be a good option.

I am willing to give this a try, it will for sure make it easier adding other platforms (e.g. web or desktop which have a different set of permissions).
 Comment 1: I certainly agree that the permissions should be as cross-platform as possible. I was thinking about something like the following:

```dart
// Permission that is passed on to the native side.
abstract class RawPermission {
  Platform get platform;
  String get id;
}

// Android permissions.
class AndroidPermission extends Permission implements RawPermission {
  Platform get platform => Platform.android;
  final String id;
  AndroidPermission._(this.id);

  /// Allows a calling app to continue a call that was started in another app.
  AndroidPermission.acceptHandover = AndroidPermission._('acceptHandover');

  /// Allows an app to access location in the background.
  AndroidPermission.accessBackgroundLocation = AndroidPermission._('allowBackgroundLocation');

  /// Allows read/write access to the "properties" table in the checkin database, to change values that get uploaded.
  AndroidPermission.accessCheckinProperties = AndroidPermission._('accessCheckinProperties');

  // + all the other possible permissions
}

// + the same for iOS, Fuchsia, MacOS, Windows, etc.

/// Common permissions found accross multiple platforms.
class Permission { // Note: does not extend RawPermission
  // (see my last GitHub comment)
}
```

That wouldn't change anything about how developers access the abstracted APIs (they just use `Permission.camera` etc.
Before doing anything with any permission (checking the status, requesting it, …), the permission would get expanded into a list of `RawPermission`s, these would get filtered based on the current platform and then the right permissions would be sent to the native side to get handled there.

This would be great for developers using the package because different platforms with vastly different permissions could be handled separately.

However, this relies on the assumption that while the permissions between platforms are vastly different, the handling of permissions (requesting them etc.) is granular and roughly the same. But if the process of requesting permissions is so different on platforms, it probably doesn't make sense to offer such an API on the Dart side.
So, I'm gonna close this issue for now.
{'source': 'GithubIssues', 'repo_name_with_owner': 'Baseflow/flutter-permission-handler', 'issue_id': 577488811, 'repo_stars': 1194.0}