Moved factory from api to spi package
Used Optional instead of constant for missing URIs
Updated nullability of everything
Further finbugs annotations
Tidied up a some minor issues