pooler_starter should cleanup slow process starts

Pooler/_starter previously had a bug where if a started process took longer
than the start_member_timeout but did not crash, the process would get
orphaned. This fix includes modifications to the starter that change its
lifecycle. The starter will now wait to be stopped by the pooler gen_server via
either the stop_member_async or stop apis. The stop_member_async api is called
on the error path and the stop api is called on the success path.

Additionally, pooler gen_server bookkeeping is fixed to correctly update the
pool state with regard to starting members. Previously, pool record was not
updated with the starting members list returned from the non_stale filter.