Support BouncyCastle FIPS provider  (#6588)

### Motivation

Try to make user able to use both "org.bouncycastle.jce.provider.BouncyCastleProvider" and  "org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider".

Current code, bouncycastle (bc) jars  are used in both broker and client, and are tied strongly in both broker and client.  We need to make it easy config. This change try to split bc and module that depends on it. Then user could freely include/exclude it.

### Changes
- build a shaded jar for bouncycastle non-fips version. other module depends on this module.
- build nar for both fips and non-fips version of bouncycastle, user could able to load bouncycastle by these 2 nar.
- split MessageCrypto out from client and made it an individual module.  so client is able to exclude bouncycastle.
- Add 2 test examples:  1, exclude bc-non-fips version, and include bc-fips version; 2, exclude bc-non-fips version and load bc-fips version by nar.

2 files changed
tree: e30874fbc146569a4f75b509712e241e5c7efde9
  1. distribution/
  2. docker/
  3. tests/