diff --git a/pydantic/main.py b/pydantic/main.py
--- a/pydantic/main.py
+++ b/pydantic/main.py
@@ -130,7 +130,7 @@ def validate_custom_root_type(fields: Dict[str, ModelField]) -> None:
 
 class ModelMetaclass(ABCMeta):
     @no_type_check  # noqa C901
-    def __new__(mcs, name, bases, namespace):
+    def __new__(mcs, name, bases, namespace, **kwargs):
         fields: Dict[str, ModelField] = {}
         config = BaseConfig
         validators: 'ValidatorListDict' = {}
@@ -220,7 +220,7 @@ def __new__(mcs, name, bases, namespace):
             '__custom_root_type__': _custom_root_type,
             **{n: v for n, v in namespace.items() if n not in fields},
         }
-        return super().__new__(mcs, name, bases, new_namespace)
+        return super().__new__(mcs, name, bases, new_namespace, **kwargs)
 
 
 class BaseModel(metaclass=ModelMetaclass):

diff --git a/tests/test_main.py b/tests/test_main.py
--- a/tests/test_main.py
+++ b/tests/test_main.py
@@ -1001,3 +1001,19 @@ class Bar(BaseModel):
     assert m.dict() == {'c': 3, 'd': {'a': 1, 'b': 2}}
     assert list(m) == [('c', 3), ('d', Foo())]
     assert dict(m) == {'c': 3, 'd': Foo()}
+
+
+def test_custom_init_subclass_params():
+    class DerivedModel(BaseModel):
+        def __init_subclass__(cls, something):
+            cls.something = something
+
+    # if this raises a TypeError, then there is a regression of issue 867:
+    # pydantic.main.MetaModel.__new__ should include **kwargs at the end of the
+    # method definition and pass them on to the super call at the end in order
+    # to allow the special method __init_subclass__ to be defined with custom
+    # parameters on extended BaseModel classes.
+    class NewModel(DerivedModel, something=2):
+        something = 1
+
+    assert NewModel.something == 2

Allow extra keyword arguments in MetaModel.__new__
# Bug
`pydantic.main.ModelMetaclass.__new__` should include `**kwargs` at the end of the method definition and pass them on to the `super` call at the end in order to allow the special method [`__init_subclass__`](https://docs.python.org/3/reference/datamodel.html#object.__init_subclass__) to be defined with custom parameters on extended `BaseModel` classes. 

Environment:
* OS: Ubuntu 1804
* Python version `import sys; print(sys.version)`: `3.7.3 (default, Apr  3 2019, 19:16:38) \n[GCC 8.0.1 20180414 (experimental) [trunk revision 259383]]`
* Pydantic version `import pydantic; print(pydantic.VERSION)`: 0.31

For example:
```py
import pydantic
class CustomBaseModel(pydantic.BaseModel):
    def __init_subclass__(cls, special_parameter):
        # do something with special_parameter
        ...

class NewModel(CustomBaseModel, special_parameter=42):
    # model definition here
    ...
```
should not raise any exceptions. But:
```
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
    class NewModel(CustomBaseModel, special_parameter=42):
  File "pydantic/main.py", line 178, in pydantic.main.ModelMetaclass.__new__
TypeError: __new__() got an unexpected keyword argument 'special_parameter'
```
I can (and will) submit a PR for this if you accept it; it is an extremely simple fix (plus not-so-simple tests because metaclasses).
Allow extra keyword arguments in MetaModel.__new__
# Bug
`pydantic.main.ModelMetaclass.__new__` should include `**kwargs` at the end of the method definition and pass them on to the `super` call at the end in order to allow the special method [`__init_subclass__`](https://docs.python.org/3/reference/datamodel.html#object.__init_subclass__) to be defined with custom parameters on extended `BaseModel` classes. 

Environment:
* OS: Ubuntu 1804
* Python version `import sys; print(sys.version)`: `3.7.3 (default, Apr  3 2019, 19:16:38) \n[GCC 8.0.1 20180414 (experimental) [trunk revision 259383]]`
* Pydantic version `import pydantic; print(pydantic.VERSION)`: 0.31

For example:
```py
import pydantic
class CustomBaseModel(pydantic.BaseModel):
    def __init_subclass__(cls, special_parameter):
        # do something with special_parameter
        ...

class NewModel(CustomBaseModel, special_parameter=42):
    # model definition here
    ...
```
should not raise any exceptions. But:
```
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
    class NewModel(CustomBaseModel, special_parameter=42):
  File "pydantic/main.py", line 178, in pydantic.main.ModelMetaclass.__new__
TypeError: __new__() got an unexpected keyword argument 'special_parameter'
```
I can (and will) submit a PR for this if you accept it; it is an extremely simple fix (plus not-so-simple tests because metaclasses).

tests/test_main.py::test_custom_init_subclass_params
tests/test_main.py::test_success tests/test_main.py::test_ultra_simple_missing tests/test_main.py::test_ultra_simple_failed tests/test_main.py::test_ultra_simple_repr tests/test_main.py::test_str_truncate tests/test_main.py::test_comparing tests/test_main.py::test_nullable_strings_success tests/test_main.py::test_nullable_strings_fails tests/test_main.py::test_recursion tests/test_main.py::test_recursion_fails tests/test_main.py::test_not_required tests/test_main.py::test_infer_type tests/test_main.py::test_allow_extra tests/test_main.py::test_forbidden_extra_success tests/test_main.py::test_forbidden_extra_fails tests/test_main.py::test_disallow_mutation tests/test_main.py::test_extra_allowed tests/test_main.py::test_extra_ignored tests/test_main.py::test_set_attr tests/test_main.py::test_set_attr_invalid tests/test_main.py::test_any tests/test_main.py::test_alias tests/test_main.py::test_population_by_alias tests/test_main.py::test_field_order tests/test_main.py::test_required tests/test_main.py::test_not_immutability tests/test_main.py::test_immutability tests/test_main.py::test_const_validates tests/test_main.py::test_const_uses_default tests/test_main.py::test_const_with_wrong_value tests/test_main.py::test_const_list tests/test_main.py::test_const_list_with_wrong_value tests/test_main.py::test_const_validation_json_serializable tests/test_main.py::test_validating_assignment_pass tests/test_main.py::test_validating_assignment_fail tests/test_main.py::test_enum_values tests/test_main.py::test_enum_raw tests/test_main.py::test_set_tuple_values tests/test_main.py::test_default_copy tests/test_main.py::test_arbitrary_type_allowed_validation_success tests/test_main.py::test_arbitrary_type_allowed_validation_fails tests/test_main.py::test_arbitrary_types_not_allowed tests/test_main.py::test_type_type_validation_success tests/test_main.py::test_type_type_subclass_validation_success tests/test_main.py::test_type_type_validation_fails_for_instance tests/test_main.py::test_type_type_validation_fails_for_basic_type tests/test_main.py::test_annotation_field_name_shadows_attribute tests/test_main.py::test_value_field_name_shadows_attribute tests/test_main.py::test_class_var tests/test_main.py::test_fields_set tests/test_main.py::test_skip_defaults_dict tests/test_main.py::test_skip_defaults_recursive tests/test_main.py::test_dict_skip_defaults_populated_by_alias tests/test_main.py::test_dict_skip_defaults_populated_by_alias_with_extra tests/test_main.py::test_dir_fields tests/test_main.py::test_dict_with_extra_keys tests/test_main.py::test_alias_generator tests/test_main.py::test_alias_generator_with_field_schema tests/test_main.py::test_alias_generator_wrong_type_error tests/test_main.py::test_root tests/test_main.py::test_root_list tests/test_main.py::test_root_failed tests/test_main.py::test_root_undefined_failed tests/test_main.py::test_parse_root_as_mapping tests/test_main.py::test_untouched_types tests/test_main.py::test_custom_types_fail_without_keep_untouched tests/test_main.py::test_model_iteration