Get DevicePushDetails (e.g. state) by making network request

After discussion in https://github.com/ably/ably-java/issues/697, Marat has implemented https://github.com/ably/ably-cocoa/pull/1186 which allows users to make a network request to get DevicePushDetails, which includes state and errorReason. This makes development easier for the users, since they make this request to see if messages successfully gets sent to devices, or the error reason if messages do not successfully get sent. This PR adds this functionality to Flutter.
This is WIP:
I am currently using a branch of Ably cocoa manually, by pointing to the local repository of Ably cocoa containing the changes Marat wanted me to test. I also have to test this with Push Admin.
The Dart and iOS code is written but in an open PR. More things need to happen:

Realtime changes required: https://github.com/ably/realtime/issues/3780 to allow devices to get their own device registration without push admin.
Feature spec changes required for this new SDK method: https://github.com/ably/docs/issues/1251
Ably Java / Android changes required: to make this network request like Ably Cocoa does in https://github.com/ably/ably-cocoa/pull/1186.

Abandoned work. Many conflicts. Noise.


Failed install pclpy using conda Python 3.7 on Ubuntu 20.04

As title
❯ python -V
Python 3.7.9

❯ conda install -c conda-forge -c davidcaron pclpy

Collecting package metadata (current_repodata.json): done
Solving environment: failed with initial frozen solve. Retrying with flexible solve.
Solving environment: failed with repodata from current_repodata.json, will retry with next repodata source.
Collecting package metadata (repodata.json): done
Solving environment: failed with initial frozen solve. Retrying with flexible solve.
Solving environment: /
Found conflicts! Looking for incompatible packages.
This can take several minutes.  Press CTRL-C to abort.
failed

UnsatisfiableError: The following specifications were found
to be incompatible with the existing python installation in your environment:

Specifications:

  - pclpy -> python[version='>=3.6,<3.7.0a0|>=3.8,<3.9.0a0']

Your python: python=3.7

If python is on the left-most side of the chain, that's the version you've asked for.
When python appears to the right, that indicates that the thing on the left is somehow
not available for the python version you are constrained to. Note that conda will not
change your python version to a different minor version unless you explicitly specify
that.

and i can't find linux-64/pclpy-0.12.0-py37_1.tar.bz2 here
https://anaconda.org/davidcaron/pclpy/files

Hi, you're right that python 3.7 is not there :-/
You need to have python from conda-forge. To make sure of that, start from a clean environment:
conda create -n my-environment
conda activate my-environment
conda install -c conda-forge -c davidcaron pclpy
This should install python 3.8 with pclpy.

You may make a change at readme :-\
https://github.com/davidcaron/pclpy/blame/master/README.md#L45

Actually I created a new python 3.8.5 environment with anaconda,
conda install --use-local pclpy-0.12.0-py38_1.tar.bz2
conda install -c local pclpy

and use local installation, the error still exists that:
The environment is inconsistent, please check the package plan carefully
The following packages are causing the inconsistency:

  - <unknown>/linux-64::pclpy==0.12.0=py38_1                                                             failed with initial frozen solve. Retrying with flexible solve.
Solving environment: -
Found conflicts! Looking for incompatible packages.                                                      failed

UnsatisfiableError: The following specifications were found
to be incompatible with the existing python installation in your environment:

Specifications:

  - pclpy -> python[version='>=3.6,<3.7.0a0|>=3.9,<3.10.0a0|>=3.7,<3.8.0a0']

Your python: python=3.8

Actually I created a new python 3.8.5 environment with anaconda,
conda install --use-local pclpy-0.12.0-py38_1.tar.bz2
conda install -c local pclpy

and use local installation, the error still exists that:
The environment is inconsistent, please check the package plan carefully
The following packages are causing the inconsistency:

  - <unknown>/linux-64::pclpy==0.12.0=py38_1                                                             failed with initial frozen solve. Retrying with flexible solve.
Solving environment: -
Found conflicts! Looking for incompatible packages.                                                      failed

UnsatisfiableError: The following specifications were found
to be incompatible with the existing python installation in your environment:

Specifications:

  - pclpy -> python[version='>=3.6,<3.7.0a0|>=3.9,<3.10.0a0|>=3.7,<3.8.0a0']

Your python: python=3.8