pg_ctl promote is not working
I think I have found the answer: this only works with streaming replication. 

My original setup used WAL replication. That was working, except for the promotion. I even tried adding a trigger file, and that didn't help. 

Then I changed my setup to use asynchronous streaming replication, and pg_ctl promote worked! When I looked in the log on the secondary server, I saw 

received promote request
redo done at 86/8A000028
last completed transaction was at log time 2015-09-14 16:15:46.316812-04
selected new timeline ID: 2
archive recovery complete
autovacuum launcher started
database system is ready to accept connections


and when I ran "select pg_is_in_recovery()" on that server, it returned false. 

Also, I see that recovery.conf has been renamed to recovery.done .