Use instancetype instead of id for initializers

Switch to `instancetype` instead of `id` so that the compiler has more information in regard to type safety.