[ARM] libm: squashed CAF e_pow implementation made generic

Summary:
The following commits have been edited to be more
general than just for qcom devices. Any arm neon device
will benefit from this change.

commit 5587d4f73977774f12f7e459edf05881ca4d4367
Author: Lucas Crowthers <lucasc@codeaurora.org>
Date:   Thu Apr 25 15:56:16 2013 -0400

    libm: optimistic pow calling.

    Call optimized pow optimistically and revert to full range
    implementation if we detect an out-of-range input.

    Change-Id: I6f3aa734adbf99484b7ff70736ef83a41e5815b8

commit 1801b320beeae4ec6078e46d45bbf65d6c8e8bee
Author: Lucas Crowthers <lucasc@codeaurora.org>
Date:   Mon Aug 27 14:35:57 2012 -0400

    Bionic/libm: Pow optimizations and bug fixes.

    Use VFP calling convention for pow_neon handoff function by default.
    Fix register usage collision between two different polynomial
    coefficients in pow_neon.  Remove conditional execution in pow_neon
    and replace with branching.

    Change-Id: I76095f4a006e2fb01a53943b66fd69bfa1fd3033

commit 688c9786420309ee660e9641c6523ec8b78f30d2
Author: Lucas Crowthers <lucasc@codeaurora.org>
Date:   Mon Aug 27 14:27:59 2012 -0400

    Bionic/libm: Prefer branches and VFP ABI.

    For internal functions set gcc attribute "aapcs-vfp" for ARM
    and use -fno-if-conversion to prefer branches over predicated
    instructions (improves performance on architectures with good
    branch prediction).

    Change-Id: I8424e0e82a19d35e7e3b6e3e122dcdecdd5426fd

commit eb45d36b9c23707551f73581c5bf181e46acd381
Author: Lucas Crowthers <lucasc@codeaurora.org>
Date:   Fri Jun 15 19:27:46 2012 -0400

    Bionic/libm: fast neon pow() for small x,y.

    Add a fast neon version of pow() suitable for relatively small
    positive x and y (between 0 and 4).  Run the standard
    implementation in all other cases.  Gives approximately 60%
    performance improvement to AnTuTu FPU scores

    Change-Id: I97e0712daeb2740764b26a44be0caaa39c481453

Test Plan: verified, test it out on any ARM NEON device.

Reviewers: randall.rushing, jriordan001, anders3408

Differential Revision: http://review.codefirex.com/D231

Conflicts:

	libm/Android.mk
libm: sync with upstream freebsd

Summary:
New long double functions have been included,
but are not in use due to the android double long
handling. imprecise.c is not built for the same reason.

Test Plan: verified

Reviewers: randall.rushing

Differential Revision: http://review.codefirex.com/D232
libm: add fmal long double stub

Summary:
This is needed in some target cases, and has since been fixed internally in the AOSP.

From enh@google.com regarding this change:
you were right, and this was the way we should have done it, but i didn't work that out until i fixed this in the same way as part of the aarch64 work (where the weak reference didn't work).

Test Plan: verified

Reviewers: randall.rushing, jriordan001, synergy

Reviewed By: synergy

Differential Revision: http://review.codefirex.com/D234