## First part of #22661
-Separating this work into 2 PRs, since this part of the fix will
immediately improve dev and user experience of the UI
[Demo](https://www.loom.com/share/b8f7657dca434f5aa929ca6cf4059cc8)
- [x] Manual QA for all new/changed functionality
- Change file will be included in PR 2/2 for this issue
Co-authored-by: Jacob Shandling <jacob@fleetdm.com>
* API client to create and get an app license
* Fixes unhandled promise rejection errors in redux config
* License Page and Form
* Adds getLicense action
* Adds License key area to App Settings Form
* Use license.token instead of license.license
* Implement API client
* Adds key icon to License Form
* Adds License Success component
* Render License Success on License Page when there is a license
* Adds persistent flash actions and reducer to redux
* Adds nag message middleware
* Moves FlashMessage component to flash_message directory
* Adds Persistent Flash component
* Renders Persistent Flash component from Core Layout
* Adds Kyle's styles
* Change license validation message
* Finishing touches for app config form license area
* Handle revoked licenses
* License Page hits setup endpoint
* Display server errors on license form
* Changes 0 allowed hosts to unlimited
* Trims JWT token before sending to the server
* GET setup page after submitting license