Django Migrate Change of App Name (active project)
I've worked on this since I posted it, and the real answer is what I've synthesized from multiple sources (including other stack exchange posts).
So... Everything changed in Django before I started using it.  After 1.7, the 'migrations' bit was internalized and posts including the word "South" are about how the world was before 1.7.  Further, the complication in my case dealt with the issue of migrations in that the project was already active and had real data in production.
There were some posts including a GITHub chunk of code that talked about migrating tables from one App to another App.  This is inherently part of the process, but several posts noted that to do this as a "migration" you needed the Migration.py to be in another App.  Maybe even an App created for the purpose.
In-the-end, I decided to approach the problem by changing the label in the Application class of apps.py in the application in question.  In my case, I am changing "pages" to "phpages" but the directory name of my app is still pages.  This works for me because the mezzanine app's "pages" sub-App is back in the python library and not a conflict in the filesystem.  If this is not your situation, you can solve it with another use of label.
So... Step-by-step, my procedure to rename pages to phpages.

Create apps.py in the pages sub-directory.  In it put:
class PagesConfig(AppConfig):
     name = "pages"
     label = "phpages"
     verbose_name = "Purple Hat Pages"
Key among these is label which is going to change things.
In __init__.py in the pages sub-directory, put default_app_config = "pages.apps.PagesConfig"
In your settings.py change the INSTALLED_APPS entry for your app to 'pages.apps.PagesConfig', ...
All of your migrations need to be edited in this step.  In the dependencies list, you'll need to change 'pages' to 'phpages'.  In the ForeignKeys you'll need to also change 'pages.Something' to 'phpages.Something' for every something in every migration file.  Find these under pages/mitrations/nnnn_*.py
If you refer to foreign keys in other modules by from pages.models import Something and then use ForeignKey(Something), you're good for this stop.  If you use ForeignKey('pages.Something') then you need to change those references to ForeignKey('phpages.Something').  I would assume other like-references are the same.
For the next 4 steps (7, 8, 9 and 10), I built pagestophpages.sql and added it to the pages sub-directory.  It's not a standard django thing, but each test copy and each production copy of the database was going to need the same set of steps.
UPDATE django_contecnt_type SET app_label='phpages' WHERE app_label='pages';
UPDATE django_migrations SET app='phpages' WHERE app='pages';
Now... in your database (my is PostgreSQL) there will be a bunch of tables that start with "pages".  You need to list all of these.  In PostgreSQL, in addition to tables, there will be sequences for each AutoField.  For each table construct ALTER TABLE pages_something RENAME TO phpages_something;  For each sequence ALTER SEQUENCE pages_something_id_seq RENAME TO phpages_something_id_seq;
You should probably backup the database.  You may need to try this a few times.  Run your SQL script through your database shell.  Note that all other changes can be propagated by source code control (git, svn, etc).  This last step must be run on each and every database.

Obviously, you need to change pages and phpages to your stuff.  You may have more than one table with one auto field and it may not be named something.
Another thing of note, in terms of process, is that this is probably a hard point in your development where everything needs be in sync.  Given that we're playing with editing migrations and changing names, you need a hard stop in development so that everything that's going to be changed (dev box, test box, staging box, production box ... and all of their databases) is at the same revision and schema.  YMMV.
This is also solving the problem by using the label field of class Application.  I choose this method in deference to changing the directory name because it involved fewer changes.  I chose not to change the name field because that did not work for me.  YMMV.
I must say that I'm a little disappointed that myapp/pages conflicts with mezzanine.pages.  It looks like some of the reasons are due to the pages slug being used in the database table name (and off top of my head, I don't see a good solution there).  What I don't see that would make sense is the equivalent to "from mezzanine import pages as mpages" or somesuch.  The ability to alias imported apps (not talking about apps in my own file tree).  I think this might be possible if I sucked in the app into my own file tree --- but this doesn't seem to be a sanctioned act, either.
So... I've done a lot of research on this... there are answers, but not complete or appropriate answers.  I have an in-use and in-production django "project" in which the "main" application is called "pages" ... for reasonably dumb reasons.  My problem is now to add mezzanine ... which has a sub-module mezzanine.pages (seems to be required .... but I'm pretty sure I need it).
mezzanine.pages apparently conflicts with "pages" ...
Now ... my pages contains a slew of non-trivial models including one that extends user (One-to-One ref), and many references to other app's tables (fortunately only outbound, ForeignKey). It also has management/commands and about 20 migrations of it's own history.
I gather I either have to changes pages to mypages or is there another route (seemingly changing mezzanine.pages seems wrong-headed).
for reference, The project is on Django 1.8 right now, so the preferred answer includes migrations.