Simplify get_pattern/2.

I had hard time figure out what was going out there. I think this code
is simpler to read and comprehend (and more efficient).
Simplify proper_statem:execute/4 to /3 (internal anyway)
Simplify strip_types.
Simplify keep_shrinking/3 to /2.
Simplify error and state handling in proper_typeserver:process_list/5
Remove hidden lists:reverse(X) ++ Y in convert_union/5
Simplify proper_arith:safe_map/2.
Simplify proper_arith:safe_zip/2.
Improve efficiency of proper_arith:list_{remove, update, insert}

Original code was construct list prefixes three times instead just once.
It affects garbage collection due memory consumption and also raw speed
a little bit.

Code changes raised exception to function clause instead of badarg as
lists:split/2 does. I haven't seen any effect due only correct internal
usage.
Improve efficiency of proper_arith:partition/2 and proper_arith:filter/2

Traverse list in reverse order to avoid four or two reversing at the end.

Build only required lists for filter.
Simplify proper_arith:{remove/2, insert/3, unflatten/2}.
Improve efficiency of jumble.

It changes O(N^2) to O(N*logN).
Inline proper_types:is_raw_type/1 the hottest function

It speeds up usage within module a little bit.
Inline proper_gen:clean_instance/1 the second hottest function

It speeds up usage within module a little bit.
Inline some hot and short functions in proper_types module.