
API and build change  and fixe summaries. Doc correctsions
and/or changes are not mentioned here; see the commit messages.

2019 August 13; version 1.2.0 (API change, non-breaking)
	The function rmr_get_xact() was added to proide a convenient
	way to extract the transaction field from a message.

2019 August 8; version 1.1.0 (API change)
	This change should be backward compatable/non-breaking
	A new field has been added to the message buffer (rmr_mbuf_t).
	This field (tp_state) is used to communicate the errno value
	that the transport mechanism might set during send and/or
	receive operations.  C programmes should continue to use
	errno directly, but in some environments wrappers may not be
	able to access errno and this provides the value to them. 
	See the rmr_alloc_msg manual page for more details.
	
2019 August 6; version 1.0.45 (build changes)
	Support for the Nanomsg transport library has been dropped.
		The library librmr.* will no longer be included in packages.

	Packages will install RMR libraries into the system preferred
		target directory. On some systems this is /usr/local/lib
		and on others it is /usr/local/lib64.  The diretory is
		determined by the sytem on which the package is built and
		NOT by the system installing the package, so it's possible
		that the RMR libraries end up in a strange location if the
		.deb or .rpm file was generated on a Linux flavour that
		has a different preference than the one where the package
		is installed.

2019 August 6; version 1.0.44 (API change)
	Added a new message type constant.

2019 July 15; Version 1.0.39 (bug fix)
	Prevent unnecessary usleep in retry loop.

2019 July 12; Version 1.0.38 (API change)
	Added new message types to RIC_message_types.h.

2019 July 11; Version 1.0.37

	librmr and librmr_nng
		- Add message buffer API function rmr_trace_ref()
		  (see rmr_trace_ref.3 manual page in dev package).

