Add HAL JSON formatter + Forms

This is a BREAKING version change because it changes `addAction`, etc. to `addForm`, and adds an extra required parameter to `addItem`.