Fixed #23938 -- Added migration support for m2m to concrete fields and vice versa

Ticket: https://code.djangoproject.com/ticket/23938
I just tried the case on PG 9.3.5:

```python
from django.db import models

class A(models.Model):
    c = models.CharField(max_length=10)
```

```python
# -*- coding: utf-8 -*-
from __future__ import unicode_literals

from django.db import models, migrations


class Migration(migrations.Migration):

    dependencies = [
    ]

    operations = [
        migrations.CreateModel(
            name='A',
            fields=[
                ('id', models.AutoField(primary_key=True, auto_created=True, verbose_name='ID', serialize=False)),
                ('c', models.CharField(max_length=10)),
            ],
            options=None,
            bases=None,
            managers=None,
        ),
    ]
```

Then changed `A.c` into a M2M field:

```python
from django.db import models

class To(models.Model):
    t = models.CharField(max_length=10)

class A(models.Model):
    c = models.ManyToManyField(To)
```

```python
# -*- coding: utf-8 -*-
from __future__ import unicode_literals

from django.db import models, migrations


class Migration(migrations.Migration):

    dependencies = [
        ('myapp', '0001_initial'),
    ]

    operations = [
        migrations.CreateModel(
            name='To',
            fields=[
                ('id', models.AutoField(serialize=False, auto_created=True, verbose_name='ID', primary_key=True)),
                ('t', models.CharField(max_length=10)),
            ],
            options=None,
            bases=None,
            managers=None,
        ),
        migrations.RemoveField(
            model_name='a',
            name='c',
        ),
        migrations.AddField(
            model_name='a',
            name='c',
            field=models.ManyToManyField(to='myapp.To'),
            preserve_default=True,
        ),
    ]
```

```shell
$ python manage.py migrate myapp     
Operations to perform:
  Apply all migrations: myapp
Running migrations:
  Applying myapp.0001_initial... OK
  Applying myapp.0002_auto_20141229_1715... OK
```

And back to the above:

```python
from django.db import models

class A(models.Model):
    c = models.CharField(max_length=10)
```

```python
# -*- coding: utf-8 -*-
from __future__ import unicode_literals

from django.db import models, migrations


class Migration(migrations.Migration):

    dependencies = [
        ('myapp', '0002_auto_20141229_1715'),
    ]

    operations = [
        migrations.RemoveField(
            model_name='a',
            name='c',
        ),
        migrations.AddField(
            model_name='a',
            name='c',
            field=models.CharField(max_length=10, default=''),
            preserve_default=False,
        ),
        migrations.DeleteModel(
            name='To',
        ),
    ]
```

```shell
$ python manage.py migrate myapp
Operations to perform:
  Apply all migrations: myapp
Running migrations:
  Applying myapp.0003_auto_20141229_1715... OK
```

And unapplying works as well:

```shell
$ python manage.py migrate myapp zero
Operations to perform:
  Unapply all migrations: myapp
Running migrations:
  Unapplying myapp.0003_auto_20141229_1715... OK
  Unapplying myapp.0002_auto_20141229_1715... OK
  Unapplying myapp.0001_initial... OK
```