Reenable high accuracy timers

As discussed on the user [mailing list](http://www.open-mpi.org/community/lists/users/2014/11/25824.php) the current implementation of MPI_Wtime defaults to gettimeofday in most cases. This patch proposes a better approach by:
1. reenabling the use of micro-second accuracy OPAL timers
2. Adding support for cycle level timers

@goodell please review. Based on our discussion at SC I made sure that when available we are using the RDTSC-based timers.
I addressed all your concerns/suggestions. Thanks, they really make the
code cleaner and hopefully more robust. This is now ready to be merged.

On Mon, Nov 24, 2014 at 3:35 PM, George Bosilca <bosilca@icl.utk.edu> wrote:

> The syntax seems to be correct. The problem is that I over-specified the
> clobber list (rax and rdx) were already implied by the "=a" and "=d" one
> line above.
>
>   George.
>
>
> On Mon, Nov 24, 2014 at 3:29 PM, Dave Goodell <notifications@github.com>
> wrote:
>
>> In opal/include/opal/sys/amd64/timer.h:
>>
>> >  static inline opal_timer_t
>> >  opal_sys_timer_get_cycles(void)
>> >  {
>> > -    opal_timer_t ret;
>> > -
>> > -    __asm__ __volatile__("rdtsc" : "=A"(ret));
>> > -
>> > -    return ret;
>> > -}
>> > -
>> > +     unsigned a, d;
>> > +#if 0
>> > +     __asm__ __volatile__ ("cpuid\n\t"
>> > +                           "rdtsc\n\t"
>> > +                           : "=a" (a), "=d" (d)
>> > +                           :: "%rax", "%rbx", "%rcx", "%rdx");
>>
>> I think you want to drop the % characters in the clobber list (two
>> places in this file, once in ia32/timer.h). Untested, but that's my
>> recollection of the syntax.
>>
>> —
>> Reply to this email directly or view it on GitHub
>> <https://github.com/open-mpi/ompi/pull/285/files#r20823713>.
>>
>
>