text: Title: Column metadata is not serialized
  Body: **Describe the bug**
  Column metadata is not serialized / deserialized, i.e. columns with metadata do not roundtrip through serialization.
  
  - [x] I have checked that this issue has not already been reported.
  - [x] I have confirmed this bug exists on the latest version of pandera.
  - [x] (optional) I have confirmed this bug exists on the master branch of pandera.
  
  #### Code Sample, a copy-pastable example
  
  ```python
  def test_roundtrip_metadata():
      schema = pa.DataFrameSchema(
          columns={
              "col": pa.Column(int, metadata={"key": "value"}),
          },
      )
      out = schema.to_json()
      print(json.dumps(json.loads(out), indent=4))
      assert schema == pa.DataFrameSchema.from_json(out)
  ```
  
  #### Expected behavior
  Test passes. Instead get:
  ```
  tests/core/test_typing.py::test_roundtrip_metadata FAILED                                                                                                                                                                                                                                                      [100%]
  
  ====================================================================================================================================================== FAILURES ======================================================================================================================================================
  ______________________________________________________________________________________________________________________________________________ test_roundtrip_metadata _______________________________________________________________________________________________________________________________________________
  
      def test_roundtrip_metadata():
          schema = pa.DataFrameSchema(
              columns={
                  "col": pa.Column(int, metadata={"key": "value"}),
              },
          )
          out = schema.to_json()
          print(json.dumps(json.loads(out), indent=4))
  >       assert schema == pa.DataFrameSchema.from_json(out)
  E       assert <Schema DataFrameSchema(columns={'col': <Schema Column(name=col, type=DataType(int64))>}, checks=[], index=None, coerce=False, dtype=None, strict=False, name=None, ordered=False, unique_column_names=Falsemetadata='None, unique_column_names=False, add_missing_columns=False)> == <Schema DataFrameSchema(columns={'col': <Schema Column(name=col, type=DataType(int64))>}, checks=[], index=None, coerce=False, dtype=None, strict=False, name=None, ordered=False, unique_column_names=Falsemetadata='None, unique_column_names=False, add_missing_columns=False)>
  E        +  where <Schema DataFrameSchema(columns={'col': <Schema Column(name=col, type=DataType(int64))>}, checks=[], index=None, coerce=False, dtype=None, strict=False, name=None, ordered=False, unique_column_names=Falsemetadata='None, unique_column_names=False, add_missing_columns=False)> = <bound method DataFrameSchema.from_json of <class 'pandera.api.pandas.container.DataFrameSchema'>>('{"schema_type": "dataframe", "version": "0.0.0+dev0", "columns": {"col": {"title": null, "description": null, "dtype": "int64", "nullable": false, "checks": null, "unique": false, "coerce": false, "required": true, "regex": false}}, "checks": null, "index": null, "dtype": null, "coerce": false, "strict": false, "name": null, "ordered": false, "unique": null, "report_duplicates": "all", "unique_column_names": false, "add_missing_columns": false, "title": null, "description": null}')
  E        +    where <bound method DataFrameSchema.from_json of <class 'pandera.api.pandas.container.DataFrameSchema'>> = <class 'pandera.api.pandas.container.DataFrameSchema'>.from_json
  E        +      where <class 'pandera.api.pandas.container.DataFrameSchema'> = pa.DataFrameSchema
  
  tests/core/test_typing.py:638: AssertionError
  ------------------------------------------------------------------------------------------------------------------------------------------------ Captured stdout call ------------------------------------------------------------------------------------------------------------------------------------------------
  {
      "schema_type": "dataframe",
      "version": "0.0.0+dev0",
      "columns": {
          "col": {
              "title": null,
              "description": null,
              "dtype": "int64",
              "nullable": false,
              "checks": null,
              "unique": false,
              "coerce": false,
              "required": true,
              "regex": false
          }
      },
      "checks": null,
      "index": null,
      "dtype": null,
      "coerce": false,
      "strict": false,
      "name": null,
      "ordered": false,
      "unique": null,
      "report_duplicates": "all",
      "unique_column_names": false,
      "add_missing_columns": false,
      "title": null,
      "description": null
  }
  ```
  
  #### Desktop (please complete the following information):
  
   - OS: [e.g. iOS]
   - Browser [e.g. chrome, safari]
   - Version [e.g. 22]
  
  #### Screenshots
  If applicable, add screenshots to help explain your problem.
  
  #### Additional context
  Add any other context about the problem here.
  