encoder: combine create() and init() functions

They were always called back-to-back() and their functionality was non-distinct.
It also now checks for abort errors at startup and returns a NULL from the
encoder open function (early aborts are usually malloc failures)