Bug 1052526 - Treat appending None to List as empty list; r=glandium

As a special exception, we change List's + and += operators to treat
"+ None" and "+= None" as "+ []" and "+= []" respectively.

This is a hack to make moz.build files simpler so they don't have to
perform "is x" checks before appending x.

While I was here, I fixed the implementation of List.__add__ to return a
List instead of list.

--HG--
extra : rebase_source : e61db4be4cf8144b092609d3baf84c372b9cf9a0
extra : amend_source : dfabc00765582764426f7cf74e79354a0bfb0824