Parse fields lazily.

This is a substantial performance improvement for people who are parsing
emails but do not need access to all the headers.

In particular I am doing: Mail::Header.new(<str>)['From'].to_s
on this example: https://gist.github.com/5901bbd810c08ed3d0b1
Micro-optimize regexes

This corresponds to about a 10% time-saving when running the specs with
bpot/ragel merged, and a bigger performance improvement for parsing
workloads.
Also unfold and split lazily

This has little effect on the specs, but on my header reading example it
makes about a 10x performance difference, finally bringing it within one
order of magnitude of the "fast hacky solution" at
https://gist.github.com/5901bbd810c08ed3d0b1
Binary search on Fields#<<
Fix code when ActiveSupport is required

Mail::Multibyte is not defined in that case, so we just force everything
to be a string.
added feature to find the mail in uid
Replace Treetop parser with a Ragel based parser
AddressListsParser: Don't add an extra address to the address list when it ends with a space.
ReceivedParser: don't error out on quoted strings in a received header
common.rl: use clearer .* in dot_atom_text, instead of (.+)?
Correctly parse addresses that begin with a comment.
Fix warnings
Merge branch 'feature/find-by-uid' of git://github.com/taketin/mail into taketin-feature/find-by-uid
Updating CHANGELOG
Merge branch 'pure_ruby_ragel_parser' of git://github.com/bpot/mail into bpot-pure_ruby_ragel_parser
Updating CHANGELOG
Updating VERSION to reference edge for master
Merge branch 'lazy-fields' of git://github.com/ConradIrwin/mail into ConradIrwin-lazy-fields
Updating CHANGELOG
Rename variable to fix overshadow