Convertir UTF-8 con BOM a UTF-8 sin BOM en Python

Dos preguntas aquí. Tengo un conjunto de archivos que generalmente son UTF-8 con BOM. Me gustaría convertirlos (idealmente en su lugar) a UTF-8 sin BOM. Parece quecodecs.StreamRecoder(stream, encode, decode, Reader, Writer, errors) manejaría esto. Pero realmente no veo ningún buen ejemplo de uso. ¿Sería esta la mejor manera de manejar esto?

source files:
Tue Jan 17$ file brh-m-157.json 
brh-m-157.json: UTF-8 Unicode (with BOM) text

Además, sería ideal si pudiéramos manejar diferentes codificaciones de entrada sin conocerlo explícitamente (visto ASCII y UTF-16). Parece que todo esto debería ser factible. ¿Existe una solución que pueda tomar cualquier codificación y salida Python conocida como UTF-8 sin BOM?

edit 1 propuesta de solución desde abajo (¡gracias!)

fp = open('brh-m-157.json','rw')
s = fp.read()
u = s.decode('utf-8-sig')
s = u.encode('utf-8')
print fp.encoding  
fp.write(s)

Esto me da el siguiente error:

IOError: [Errno 9] Bad file descriptor
Newsflash

En los comentarios me dicen que el error es que abro el archivo con el modo 'rw' en lugar de 'r +' / 'r + b', por lo que eventualmente debería volver a editar mi pregunta y eliminar la parte resuelta.

Respuestas a la pregunta(12)

Su respuesta a la pregunta