New features:
* You can now omit `self` in param setter/getter and action definitions. Since these are created in the `define_params(self)` method of a Piece, `self` already exists in the namespace. For example:
python
def define_params(self):
pzp.param.readout(self, "digit")
def digit():
return np.random.randint(0, 10)
* Param setter and getters now get unique code object names, meaning that they show up correctly when profiling.
* Thread upgrades: `set_value` and `get_value` are now threadsafe (no promises about user-defined setters and getters though!). Threaded versions of the methods are available, and can be invoked by ctrl+clicking the corresponding GUI buttons (or pressing ctrl+enter) to avoid freezing the GUI. Care should be taken with this though, as setting a value multiple times before the operation finishes can confuse hardware for example.
* Actions can now return values when called.
* The global STOP is now called on exit to help your Pieces wind down gracefully.
* Keyboard shortcuts for actions now work while focus in Popup, and new `Popup.close()` method added.
* New logo! Plus a Q&A section in the documentation.
Fixes:
* The Puzzle and Popups Qt objects are now marked for deletion when closed, avoiding any memory leaks or objects lingering when not expected to.
* ParamSlider no longer emits the `changed` Signal twice when `set_value` is used.
* ParamArray spinner now updates correctly for different getter/setter combinations.
* `self.folder` now set for Pieces _before_ `define_params/define_actions`
* Assorted fixes to get readthedocs to build again