Allow custom settings field types

Allows custom settings fields types + has backward compatibility for settings fields without defined 'type' which falls back to text input.