Factor POD part of Arg into ArgInfo to be able to store it in Array.
Use ArgInfo instead of Arg where possible.
Don't use initializer lists.
Move formatting functionality from BasicFormatter to BasicWriter & FormatPaser to simplify the implementation of standalone formatting methods.
Decouple the action perform on argument's destruction from the argument.