Repository: graphql-python/graphene

Issue:
Bug: Name of a connection is always the name of the class
```
class BranchesOnClient(relay.Connection):
    pass
```

Based on the implementation of `relay.Connection` I expect the default name to be `BranchesOnClientConnection`.

```
class BranchesOnClient(relay.Connection, name="Foo"):
    pass
```

Now I expect the type name to be `Foo`.

In fact, in both cases the name will be `BranchesOnClient`. This is because `BaseType` sets `_meta.name` to the class name if no `name` argument is passed, and no `name` argument is passed because `relay.Connection` already caught it, assigned it to `_meta`, and removed it from the `**kwargs` dict that is passed on through the ``__init_subclass_with_meta__`` chain.

Discussion:

Patch:
diff --git a/graphene/relay/connection.py b/graphene/relay/connection.py
index afe6ffb..3e2e9ad 100644
--- a/graphene/relay/connection.py
+++ b/graphene/relay/connection.py
@@ -73,7 +73,7 @@ class Connection(ObjectType):
         edge = type(edge_name, edge_bases, {})
         cls.Edge = edge
 
-        _meta.name = name
+        options['name'] = name
         _meta.node = node
         _meta.fields = OrderedDict([
             ('page_info', Field(PageInfo, name='pageInfo', required=True)),


Test patch:
diff --git a/graphene/relay/tests/test_connection.py b/graphene/relay/tests/test_connection.py
index b6a26df..3697888 100644
--- a/graphene/relay/tests/test_connection.py
+++ b/graphene/relay/tests/test_connection.py
@@ -52,6 +52,21 @@ def test_connection_inherit_abstracttype():
     assert list(fields.keys()) == ['page_info', 'edges', 'extra']
 
 
+def test_connection_name():
+    custom_name = "MyObjectCustomNameConnection"
+
+    class BaseConnection(object):
+        extra = String()
+
+    class MyObjectConnection(BaseConnection, Connection):
+
+        class Meta:
+            node = MyObject
+            name = custom_name
+
+    assert MyObjectConnection._meta.name == custom_name
+
+
 def test_edge():
     class MyObjectConnection(Connection):
 
@@ -122,9 +137,10 @@ def test_connectionfield_node_deprecated():
     field = ConnectionField(MyObject)
     with pytest.raises(Exception) as exc_info:
         field.type
-    
+
     assert "ConnectionField's now need a explicit ConnectionType for Nodes." in str(exc_info.value)
 
+
 def test_connectionfield_custom_args():
     class MyObjectConnection(Connection):