Dont require [] for keyword list operand in when/2
Dont add [] for last arg keyword lists in tuples, lists and when/2
Change typespec guards to keyword list

Previous syntax:
@spec fun(a) :: b when is_var(a) and is_subtype(b, [a])
New syntax:
@spec fun(a) :: b when a: var, b: [a]