To my knowledge, CyanogenMod allows you to modify each app's permissions at any time after install. When an app requests a service that you've blocked in this way, the call will fail and throw a java.lang.SecurityException
.
Android Marshmallow will partially bring this feature to stock Android, ie some permissions will be modifiable after install, but stock Android will never fully support this for all permission types because allowing you to block an app's internet access, in-app-purchases, etc interferes with Google's ad revenue.
As a final note, I stopped using the Facebook app when they added the mic permission. Too Creepy. When I was playing with the Android M dev preview a few months ago, I tried removing the Camera permission from a bunch of apps. Most apps popped up an error message like I expected when I tried to access the camera. Facebook, on the other hand, went ahead and opened the camera as if nothing was wrong, so I'm highly skeptical that Facebook doesn't play by the rules.
EDIT: Apparently the Facebook app does this in CyanogenMod too, confirmed by @Thanathan in this question.