What is the purpose of the announcement_signatures message as specified by the Lightning Network RFC? Isn't the channel_announcement message enough for channel advertisement? Why is the announcement_signatures message required?

Reference BOLT #7
As far as I understand the process the channel is constructed between two peers. For privacy reasons one of the two peers could decide to keep the channel private.

Bolt7 uses the following quote with a reference to the open message of Bolt2


  The willingness of the initiating node to announce the channel is signaled during channel opening by setting the announce_channel bit in channel_flags (see BOLT #2).


In that case the peer would not sign the channel and disalowing the other party to have a channel_announcement message. In this way the channel cannot be public as others would not react to the announcement as there are signatures missing. 

So to summarize: the message with the signatures is a message between the channel partners allowing for a gossip message of the peer2peer protocol to announce the channel. Hope that made it clear (: