[X] Options should always be done through an options class, and no longer
    through arrays like is shown in trunk/Mail/docs/tutorial/tutorial_smtp_auth.php.
	See: http://ez.no/ezcomponents/contributing/coding_standards#id45
	As in this case there are options before, the functionality should stay,
	but the array() way of passing objects should not be documented.

	- The IMAP, POP3 and SMTP transports and the ezcMailParser class can receive
	options objects in the constructor. They can still receive options as arrays
	to keep compatibility.

	- TS: Actually we should not even document anymore, that an array also
	  works as options. Just the option class itself should be documented so
	  no new users start with the deprecated way of handling options. The
	  default value for $options in ctors should also be null, not array()
	  then.

[X] The same in ezcMailImapSet but as that did not have options before, the
    array way should not be supported at all.

	- To keep consistency in the whole package array options were used.

[X] The "James Bond" header looks broken to me in the tutorial.

	- Fixed.

[ ] Shouldn't the charset for headers default to "Utf-8" instead of "us-ascii"?
    I am not sure what we do in other cases, it of course has to be consistent.
	
	- TS: I think we should default to UTF-8 everywhere we need to define a
	  default charset.

[ ] Isn't the "$charset = $this->getHeaderCharset" to
	"$value = substr( $value, 7 ); // "dummy: " + 1" bit copied from somewhere?
	If so, we should make this a new (private) method somewhere.

[X] In ezcMailImapTransport, why did you change many properties to protected
    (from private)?

	- I think it makes more sense to have protected properties, and also makes
	it easier to test.

[X] I see some strange things with ezcMailTransportMta vs ezcMailMtaTransport 
    in the trunk/Mail/src/transports/mta/mta_transport.php file... are you 
	sure you didn't swap something? Or was it fucked up before? :)

	- ezcMailTransportMta is a wrong name so it is deprecated in transport_mta.php
	ezcMailMtaTransport is correct and it is in mta_transport.php

[X] The same thing seems to be going on with ezcMailTransportSmtp vs
    ezcMailSmtpTransport.

	- The same thing above.

[ ] In ezcMailTools::validateEmailAddressMx() we are using smtp.ez.no in the
    HELO command. This will be incorrect for most of the use cases, since HELO
	should identify the server that is opening the communication. We should
	either rely on $_SERVER['SERVER_NAME'] or let the user supply the domain
	to use in HELO. Same applies for the sender email address. This should
	either be "postmaster@{$_SERVER['SERVER_NAME']}" or also configurable.

[ ] On my system several failures and warnings occur. I guess this is mostly
    because test cases don't get skipped that are only working inside the eZ
	network, but some seem to have real problems. For details, please check
	http://home.schlitt.info:8080/buildresults/Mail.
