Break misleading `config` object into 3 parts

* config (actual gadget config)
* learnerState (actual learnerState)
* editable (since it is non-persisted and state-only)

This will help the prospective gadget developers understand better
the various types of gadget states and persisted information
 - Lumping them into one would confuse developers not familiar with the
   product