Add support for None is [not] None
Add optional type returning
Add test
Refactor `is` and `is not` to handle all types
Clean up
Merge branch 'master' into optional_type

Conflicts:
	numba/targets/builtins.py
	numba/typeinfer.py
Merge branch 'fix_ambiguous_overloading' into optional_type
Make optional type works as argument
- add optional type coercion to its base type
- to_native_value(optional_type)
Allow types to be casted to optional(type)
Revert "Merge branch 'fix_ambiguous_overloading' into optional_type"

This reverts commit 983337512a8299f08f4028f637340f5538bfde24, reversing
changes made to 68af9d83323fcffca8214058306d507ded96cc8a.
Merge branch 'master' into optional_type

Conflicts:
	numba/compiler.py
	numba/typing/templates.py
Support optional(types) for arguments and values
Raise descriptive errors when invalid operation on None
Handle and test coercion of optional types properly
Fix docstring
Merge branch 'master' into optional_type

Conflicts:
	numba/tests/test_typeinfer.py
Merge pull request #744 from sklam/optional_type

Optional type