Lower the amount of recursion in ason_reduce

We give ason_reduce its own calloc'd stack, and then we tell it to detect when
its helper functions return objects that are still unreduced and retry them.
This dramatically lowers the amount of times we need to call ason_reduce from
within ason_reduce or its called functions.

Signed-off-by: Casey Dahlin <casey.dahlin@gmail.com>
Code format fix

Signed-off-by: Casey Dahlin <casey.dahlin@gmail.com>
Fix double-free in value reduction

Signed-off-by: Casey Dahlin <casey.dahlin@gmail.com>